| 文件包含漏洞学习(1)简介程序开发人员一般会把重复使用的函数写道单个文件中,需要使用某个函数时直接调用此文件,而无需再踩编写,这个文件调用的过程一般称为文件包含。有时候将包含的文件设置为变量,用来动态调试,这样就可能导致客户端可调用一个恶意文件,造成文件包含漏洞。文件包含漏洞常见于PHP语言中,但不代表其他的语言没有。 文件包含函数php中文件包含函数有以下四种: require()
require_once()
include()
include_once()
 include()和require()的区别,include在包含的过程中执行到include时才包含文件,找不到被包含文件时只会产生警告,脚本将继续执行,require 只要程序一运行就包含文件,找不到被包含的文件时会产生致命错误,并停止脚本。 而include_once(),require_once()这两个函数,与前两个的不同之处在于这两个函数只包含一次,适用于在脚本执行期间同一个文件有可能被包括超过一次的情况下,你想确保它只被包括一次以避免函数重定义,变量重新赋值等问题。 利用条件文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。 示例: <?php
$file = $_GET[ 'page' ];
?> 
 这里$_GET[‘page’]参数未进行任何过滤,尝试本地包含。 
 PHP中只要文件内容符合PHP语法规范,包含时不管扩展名是什么都会被PHP解析,若文件内容不符合PHP语法规范则会暴漏其源码。
 
 还分为本地包含,远程包含等等,今天简单学习一下,这里后续一一补充。 参考:https://www.freebuf.com/articles/web/182280.html
 https://www.cnblogs.com/bmjoker/p/9035259.html
 |