先上思維導圖
此靶場主要是代碼審計
第一關:白名單驗證
上傳圖片馬進行抓包,修改后綴名為php即可
第二關:可以用第一關方法上傳,但是這關是考修改MIME信息,將MIME信息改為白名單內容即可
第三關:黑名單驗證
將php格式換成類似格式即可
第四關:.htaccess解析
創建一個.htaccess文件,編輯內容為
<FilesMatch "cxk.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
上傳上去,接着上傳cxk.jpg上去會被解析為php格式
第五關:代碼中無strtolower()函數 //轉化為小寫
將后綴改為大寫即可
第六關:代碼中無收尾去空函數trim() //去除字符串中的空格
后綴加空格即可
第七關:代碼中無deldot()函數 //刪除文件名末尾的點
后綴加個.
第八關:少了str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
利用Windows特性
在window的時候如果文件名+"::$DATA"會把::$DATA之后的數據當成文件流處理,不會檢測后綴名,且保持::$DATA之前的文件名,他的目的就是不檢查后綴名
后綴加上::$DATA
第九關:一次過濾問題
后綴加. .即可
第十關:雙后綴名繞過
$file_name = str_ireplace($deny_ext,"", $file_name); //這段代碼是去除黑名單里面的名稱
后綴改為pphphp即可
第十一關:%00截斷原理
www.xxx.com/shell.php%00.jpg => www.xxx.com/shell.php
如圖
第十二關:和上一關思路一樣,不過這里是POST傳參,得將%00進行url編碼后再提交
第十三關:利用靶場自帶文件包含漏洞可將圖片馬解析為php執行
一句話:<?php @eval($_POST['x']); ?> 千萬別寫錯,我這里寫錯了卡了好久[/流淚]
可以用 copy 1.jpg /b + 1.php /a webshell.jpg 制作圖片馬,也可以直接在圖片中寫
根據自帶的文件包含漏洞可以執行圖片馬
第十四關和第十五關和上述操作一樣,只是代碼有些差異
第十六關:二次渲染
和以上方法一樣,只是上傳上去后一句話代碼會被殺,人工嘗試繞過基本是不可能構造出能繞過渲染函數的圖片webshell的,知道怎么解就可以了。
第十七關:條件競爭
看代碼他是先將圖片上傳上去,才開始進行判斷后綴名、二次渲染。如果我們在上傳上去的一瞬間訪問這個文件,那他就不能對這個文件刪除、二次渲染。這就相當於我們打開了一個文件,然后再去刪除這個文件,就會提示這個文件在另一程序中打開無法刪除。
操作:直接上傳一個php文件,然后進行抓包,將數據包發送至intruder下,如圖操作
開始攻擊,然后一直訪問那個php文件地址,有瞬間可以執行
第十八關:這關還是同樣的競爭條件,執行的順序是先上傳然后再改名,但如何快速的多線程上傳那就會出現bug,繞過方法和上一關的一樣,但是這關在上傳之前用了白名單來檢測,所以只能上傳圖片馬,用Apache解析漏洞或者是文件包含漏洞。
第十九關:
方法1,用%00截斷
方法2,move_uploaded_file()有這么一個特性,會忽略掉文件末尾的 /.
第二十關:數組繞過