banner
lca

lca

真正的不自由,是在自己的心中设下牢笼。

cisp-pte的一個文件上傳題目

來一題 cisp-pte 中的文件上傳題目,需要爆破猜解上傳文件的路徑

打開題目,如下界面

image

給出了文件上傳部分的代碼

$filename = $files["name"];
$randnum = rand(1, 99999);
$fullpath = '/' . md5($filename.$randnum).".".substr($filename,strripos($filename,'.') + 1); 

通過代碼可知,上傳的文件名會經過 md5 加密,加密方式為當前上傳的文件名加 1-99999 的隨機數,後接一個。文件後綴。

嘗試上傳文件試試,上傳的文件會過濾 eval 等關鍵詞,可以用大寫繞過,content-type 需要換成圖片格式。

image

上傳成功後,但是看不到文件上傳後的路徑。

根據上傳的代碼我們可以先上傳圖片,上傳的圖片進行 md5 加密,md5 (1.php1).php,圖片上傳後,由於不知道上傳文件的路徑,所以需要猜解上傳後的文件名,猜解同樣是採用 md5 (1.php1).php 的方式。
下面看看具體操作:
1、先將包放到 intruder,填寫一個 x-forwarded-for 參數,設置內容為 127.0.0.1,對 1 參數進行遍歷。

image

2、接下來設置 payload 選項

Payload type

From:1
To:200
Step:1

image

1-99999 中選 1-200 進行遍歷

還需要設置兩個值,payload processing,在遍歷每個值時,添加 1.php 前綴,也就是上傳的文件名,然後對其內容(1.php [1-200])進行 md5 加密。

image

3、上傳成功後,大小長度都一樣,此時還不知道上傳後的文件名是什麼,因為 1.php [1-200] 的 md5 值是一樣的,所以我們再爆破一次,這次直接請求文件名,/md5 (1.php [1-200]),能成功訪問的就是正確的文件名。

image

4、猜解上傳後的文件名,直接訪問 md5 加密後的內容。

image

Payload 設置和上傳文件一致。

image

通過 200 的狀態碼區分,可以知道上傳的文件名如下圖中所示。

image

上傳成功後,通過蟻劍連接。

image


補充:2023-07-21

上述方法在文件上傳處有點囉嗦,此處不需要如此繁瑣的設置 payload,下面給出更簡單的解法。

1、抓包

image

設置 payload,直接發包即可,此處無需設置別的 payload,null payload 表示重複發送請求。

image

2、接下來開始爆破路徑

隨意請求一個路徑,保留.php

image

payload 設置如下:

image

image

2000 個 payload 可以上傳成功多個文件

image

image

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。