原理:
文件包含漏洞产生的原因是在通过PHP函数引入文件时,由于传入的文件名没有
经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意
的代码注入。
几乎所有的脚本语言都会提供文件包含的功能,但文件包含漏洞在PHP Web
Application中居多,而在JSP、ASP、ASP.NET程序中却非常少,这是有些语言设计
的弊端。在PHP中经常出现文件包含漏洞,但并不意味着其他语言不存在。
使用的函数:
include():找不到被包含文件时会产生警告(E_WARNING) ;
include_once():与include()类似,代码已经被包含则不会再次包含,即只执行一次
require():找不到被包含的文件时会产生致命错误,后续代码不执行(E_COMPILE_ERROR)
require_once():与require()类似,代码已经被包含则不会再次包含
实验
创建include.php文件
<?php
include($_GET['page']);
?>
创建phpinfo.php文件
<?php phpinfo()