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就在這