日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

upload-labs_pass21_CTF逻辑老饶了

發布時間:2023/12/19 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 upload-labs_pass21_CTF逻辑老饶了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

pass21-源碼分析和提示

提示:

源碼:

$is_upload = false; $msg = null; if(!empty($_FILES['upload_file'])){//檢查MIME$allow_type = array('image/jpeg','image/png','image/gif');if(!in_array($_FILES['upload_file']['type'],$allow_type)){$msg = "禁止上傳該類型文件!";}else{//檢查文件名$file = empty($_POST['save_name']) ? $_FILES['upload_file']['name'] : $_POST['save_name'];if (!is_array($file)) {$file = explode('.', strtolower($file));}$ext = end($file);$allow_suffix = array('jpg','png','gif');if (!in_array($ext, $allow_suffix)) {$msg = "禁止上傳該后綴文件!";}else{$file_name = reset($file) . '.' . $file[count($file) - 1];$temp_file = $_FILES['upload_file']['tmp_name'];$img_path = UPLOAD_PATH . '/' .$file_name;if (move_uploaded_file($temp_file, $img_path)) {$msg = "文件上傳成功!";$is_upload = true;} else {$msg = "文件上傳失敗!";}}} }else{$msg = "請選擇要上傳的文件!"; }

這一關對于學習知識來說,已經意義不大了,但是出題人故意把這一關設計的彎彎繞繞。

代碼解析:

首先檢查MIME類型。
規定了白名單:‘image/jpeg’,‘image/png’,‘image/gif’

然后檢查文件名,這個也是可以抓包修改的,因為是從POST請求中修改文件名的。

注意這里有一句三目運算符:

$file = empty($_POST['save_name']) ? $_FILES['upload_file']['name'] : $_POST['save_name'];

如果保存名稱是空的,那就保存名稱直接賦值成文件的名字。

然后判斷保存名稱是不是數組:(這一步貌似很奇怪,所以說這一關是為了出題而出題)
如果不是數組,就分割。
然后是下面這一句:

$ext = end($file);

是從數組中拿到最后一項。

然后:

$allow_suffix = array('jpg','png','gif');

又做了一次白名單 的判斷?!匪詓ave_path中的最后一項(save_path是一個數組)也確定了,是白名單的其中一個。

然后是else:
先看這一句:

$file_name = reset($file) . '.' . $file[count($file) - 1];

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逻辑老饶了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。