文件上傳漏洞之upload-labs靶場通關(20關)


先上思維導圖

此靶場主要是代碼審計

 

第一關:白名單驗證

上傳圖片馬進行抓包,修改后綴名為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()有這么一個特性,會忽略掉文件末尾的 /.

 

 

第二十關:數組繞過


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM