upload-labs_pass21_CTF逻辑老饶了
pass21-源碼分析和提示
提示:
源碼:
這一關對于學習知識來說,已經意義不大了,但是出題人故意把這一關設計的彎彎繞繞。
代碼解析:
首先檢查MIME類型。
規定了白名單:‘image/jpeg’,‘image/png’,‘image/gif’
然后檢查文件名,這個也是可以抓包修改的,因為是從POST請求中修改文件名的。
注意這里有一句三目運算符:
$file = empty($_POST['save_name']) ? $_FILES['upload_file']['name'] : $_POST['save_name'];如果保存名稱是空的,那就保存名稱直接賦值成文件的名字。
然后判斷保存名稱是不是數組:(這一步貌似很奇怪,所以說這一關是為了出題而出題)
如果不是數組,就分割。
然后是下面這一句:
是從數組中拿到最后一項。
然后:
$allow_suffix = array('jpg','png','gif');又做了一次白名單 的判斷?!匪詓ave_path中的最后一項(save_path是一個數組)也確定了,是白名單的其中一個。
然后是else:
先看這一句:
reset($file)和end($file)兩者相反,reset($file)拿的是數組的第0個元素。
$file[count($file) - 1]是數組 的最后一項,所以$file_name是數組第一個元素.數組最后一個元素
說白了,$file_name是數組第一個元素(文件名)+數組最后一個元素(擴展名)
然后最后再注意一下PHP的move_uploaded_file函數的特性,在pass20的那一關已經碰到過了。不了解的可以去看一下pass20
pass21-思路
首先準備上傳shell.php(一句話木馬)
然后先抓包:
修改:
上傳成功了:
pass21-連接webshell
21關也過了
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的upload-labs_pass21_CTF逻辑老饶了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: upload-labs_pass20-m
- 下一篇: burp过期了,换一个