文件包含函数
(当利用这四个函数来包含文件时,不管文件是什么类型(图片、txt等等),都会直接作为php文件进行解析)
PHP中文件包含函数有以下四种:
require()
require_once()
include()
include_once()
解析:
1.其实可以把require()和include()作为两个大类,require_once()和include_once()是它们的变形。
include在包含的过程中如果出现错误,会报一个警告,但是程序会继续正常运行;而require函数出现错误时,会直接报错并退出程序的执行。
两者是整个程序是否完全运行的区别。
2.include_once(),require_once()这两个函数,与前两个的不同之处在于这两个函数只包含一次。如果一个文件已经被包含过了,则require_once() 和 include_once() 则不会再包含它。
这两个函数适用于在脚本执行期间同一个文件有可能被包括超过一次的情况下。如果想要确保它只被包括一次,避免函数重新定义、变量重新赋值,可以采用这两种函数。
文件包含漏洞产生原因
文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。
本地文件包含漏洞(LFI-local)
需要能够控制包含的文件
1.无限制本地文件包含漏洞
常见的敏感信息路径:
Windows系统
c:\boot.ini /