文件包含截断的3种方法


前言

PHP的文件包含可以直接执行包含文件的代码,包含的文件格式是不收限制的,只要能正常执行即可。文件包含又分为本地文件包含和远程文件包含。渗透测试中文件包含漏洞大多可以直接利用获取webshell。文件包含函数有include、include_once,require、require_once。他们之前的区别就是include遇到报错还会执行下面的代码,require则是会报错退出程序。远程文件包含是需要开启allow_url_include=On的。

正文

接下来就开始学习一下文件包含的3中截断方法
首先给出代码
这是网站首页,这段代码是典型的文件包含漏洞,将获取的get传参进行文件包含,参数为可控

我的目录下有一个123.php文件,内容为这里是123.php文件

可以看到文件包含的内容固定添加了.php后缀,没法任意文件包含
文件包含截断方法有3种,第一种是使用%00截断,但是php>5.3以后就不能使用了,开启了GPC的情况下也是不能使用的
我在123.txt下写了一段php代码,来进行测试

直接添加?a=123.txt%00,是可以截断后缀名的,这样就可以达到任意文件包含的目的了

第二种截断方法是使用垃圾字符填充
Windows下使用(.)加(/)的方法填充259次,linux下需要使用2038次
这一种方法我本地没能复现成功

第三种方法是在远程文件包含时通过?来伪截断
这种阶段方法不受GPC和PHP版本的影响,webserver会把问好当作请求的参数
来看示例


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM