前言
此方法是@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)叔叔搞站遇到過這種情況,當時無果放棄了,前幾天草叔叔告訴我他有思路了。
感謝檸檬草叔叔給我分享這個技巧,讓我學到了新知識 謝謝你 :)