痛苦的滲透之路
0x00 前言
這次的CTF玩的很酸爽,一共7個 WEB滲透 類的題目,這也是痛苦的開始。好好的審計,為何加那麼多高門檻。
0x01 Pentest-homework-200
http://homework.sctf.xctf.org.cn/
打開完整,就是登陸頁面,進入註冊。名字,年齡,上傳圖片。
順利登陸之後是顯示一張圖片。還有一個homework的鏈接。
點擊homework鏈接之後是一個包好頁面的網址。
http://homework.sctf.xctf.org.cn/homework.php?homework=homework.txt
可以判定這是一個文件包含漏洞的腦洞。馬上試試上傳木馬圖片來包含。
必然的繼而,包含不成功。
讀取源碼來瞅瞅上傳功能出了什麼問題。
http://homework.sctf.xctf.org.cn/homework.php?homework=php://filter/convert.base64-encode/resource=index.php
果斷成功讀取。然後把該讀取的源碼全都download下來。
通過審計代碼
if(isset($_POST\['upload'\])){
$filename = $_FILES\['uploaded'\]\['name'\];
$filetype = $_FILES\['uploaded'\]\['type'\];
$filesize = $_FILES\['uploaded'\]\['size'\];
$tmpname = $\_FILES\['uploaded'\]\['tmp\_name'\];
$uploaddir = './upload/';
$target_path = $uploaddir.basename($filename);
$fileext = substr(strrchr($filename,"."),1);if(($fileext == 'gif')&&($filetype == "image/gif")){
{ if(move\_uploaded\_file($tmpname,$target_path))
{
}
}
$im =imagecreatefromgif($target_path);
srand(time());
$newfilename = strval(rand()).".gif";
$newimagepath = $uploaddir.$newfilename;
imagegif($im,$newimagepath);
unlink($target_path);
}else if(($fileext == 'jpg')&&($filetype == "image/jpeg")){
...
果然有點意思,上傳的圖片都經過imagecreatefromgif等函數處理過了。
但是這不是重點,重點是前面的move_uploaded_file( t m p n a m e , tmpname,