一、文件包含原理:
通过变量动态调用函数文件时,用户可以改变变量,或是没检验,检验被绕过而调用恶意脚本文件。二、检测:
白盒:代码审计黑盒:(1)手工看参数值及功能点:看网址后面的参数值是否为文件或文件名,看该网站的功能点
(2)公开的漏洞
(3)扫描目录的工具
三、文件分为本地文件和远程文件
本地文件包含:(1)有限制: 强制文件格式限制:开发时代码强制设置文件格式 include($filename. ".html");
如果参数输入x.php(即包含x.php)则寻找目录下的x.php.html文件,没找过该文件就返回错误。
绕过:1.%00截断 例: url=http://...../?filename=x.php%00(但php版本需小于5.3.4)
2.长度截断:windows(长于256),linux(长于4096)
例: url=http://...../?filename=x.php./././././(直到长度超过上述限制) (2)无限制 注意目录级数
远程文件包含(危害更大)
一般都有限制:
(1)可能是代码限制:放弃
(2)平台没限制:phpinfo看到allow_url_include为on就表明支持远程包含
(3)强制文件格式限制:%20,%23,?绕过……
四、伪协议
利用伪协议: https://www.cnblogs.com/endust/p/11804767.html五、防御
(1)需要传参,固定文件后缀 include($filename. ".html")(2)不需要传参,固定文件名
(3)waf