![a7aaf8219ea8a553316e036d1d85e241.png](https://i-blog.csdnimg.cn/blog_migrate/b118f9eb54a1cd88c7292fe615a8a3b9.jpeg)
截断大概可以在以下情况适用
- include(require)
- file_get_contents
- file_exists
- 所有url中参数可以用%00控制
0x01. 本地文件包含1.1 截断类型:php %00截断
截断条件:
php版本小于5.3.4 详情关注CVE-2006-7243
php的magic_quotes_gpc为OFF状态
漏洞文件lfi.php
<?php$temp = $_REQUEST['action'].".php"; include$temp; // include造成了LFI和php的%00截断?>
要include的password文件
Password
<?phpphpinfo();?>
利用代码:lfi.php?action=password%00
注意:url正宗%00是被会url解码成0x00,所以可能导致截断。
password文件被成功包含并且执行phpinfo()函数。
如果没有截断条件,lfi.php就只能包含php扩展名的文件。
相反,如果有截断条件,lfi.php可以包含任意文件的扩展名。
当把magic_quotes_gpc打开,php版本依然是5.2.9时,再测试,结果%00被转义成了0两个单体字符,不再具有截断功能。
![f407bfe0310b89948c629ae818ce1037.png](https://i-blog.csdnimg.cn/blog_migrate/7793d6d4e54f10dbe28b96f0029ce6e4.jpeg)
原因是:当打开magic_quotes_gpc时,所有的 '(单引号),"(双引号),(反斜线)和 NULL字符(%00)都会被自动加上一个反斜线进行转义。还有很多函数有类似的作用 如:addslashes()、mysql_e