前言
此方法是@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)叔叔搞站遇到过这种情况,当时无果放弃了,前几天草叔叔告诉我他有思路了。
感谢柠檬草叔叔给我分享这个技巧,让我学到了新知识 谢谢你 :)