CTFHUB-技能樹-Web前置技能-文件上傳(前端驗證—MIME繞過、00截斷、00截斷-雙寫后綴)
前端驗證—MIME繞過
有關(guān)MIME
web服務(wù)器使用MIME來說明發(fā)送數(shù)據(jù)的種類, web客戶端使用MIME來說明希望接收到的數(shù)據(jù)種類
MIME的作用
使客戶端軟件,區(qū)分不同種類的數(shù)據(jù),例如web瀏覽器就是通過MIME類型來判斷文件是GIF圖片,還是可打印的PostScript文件。
簡單來說就是一種校驗機制,當文件進行上傳的時候對文件的Content-Type進行校驗,如果是白名單中所允許的類型則能夠成功上傳,如果不是則無法上傳。
解題時有很多種思路
方法一
直接上傳木馬文件,把mime類型改為前端可驗證的
方法二
也就是直接傳入前端可驗證文件,抓包修改為PHP腳本文件
題目解析
既然是Content-Type驗證,就需要進行抓包
依舊上傳php一句話木馬文件,并抓包
這里,修改Content-Type字段的值為image/jpeg(也可以是別類型)
放包,發(fā)現(xiàn)上傳成功
訪問一下,發(fā)現(xiàn)執(zhí)行成功
用蟻劍進行連接,尋找flag即可
html中發(fā)現(xiàn)flag
MIME繞過—00截斷
關(guān)于00截斷
截斷原理:
0x00是字符串的結(jié)束標識符,攻擊者可以利用手動添加字符串標識符的方式來將后面的內(nèi)容進行截斷,而后面的內(nèi)容又可以幫助我們繞過檢測。
00截斷的限制條件:
PHP<5.3.29,且GPC關(guān)閉
參考鏈接:http://www.admintony.com/%E5%85%B3%E4%BA%8E%E4%B8%8A%E4%BC%A0%E4%B8%AD%E7%9A%8400%E6%88%AA%E6%96%AD%E5%88%86%E6%9E%90.html
00截斷有限制,php版本得低于5.3,并且GPC得關(guān)閉,一般在url上。
兩種方法,%00和0x00,后臺讀取是遇到%00就會停止。
舉個例子,url中輸入的是upload/post.php%00.jpg,那么后臺讀取到是upload/post.php,就實現(xiàn)了繞后目的。
————————————————
參考鏈接:https://blog.csdn.net/m0_52432374/article/details/113850458
00截斷簡單來說,就是由于php解釋器是由C語言編寫的,所以遵循C語言解析文件時遇到ascll碼0時停止解析,而%00表示ascll碼中的0,所以php解釋器在解析文件時遇到%00就會默認文件名已經(jīng)解析結(jié)束,所以我們可以利用這一原理進行上傳。
題目解析
這里直接上傳php一句話木馬文件,不可行,顯示文件類型不匹配
查看源代碼發(fā)現(xiàn),設(shè)置了白名單
根據(jù)提示,我們使用00截斷進行繞過。
首先使用bp抓包
我們找到文件名,在文件名后面,在POST請求后面,都加上我們的截斷(讓他后面的代碼不在執(zhí)行。),1.php%00;.jpg
放包,上傳成功
雖然這次頁面沒有提示我們的文件存放在哪里,但是根據(jù)之前的題目。我們可以判斷出我們上傳的文件擺放在upload目錄下面。我們直接訪問/upload/1.php,發(fā)現(xiàn)代碼執(zhí)行成功
然后我們使用蟻劍進行連接一句話木馬,尋找flag
MIME繞過—00截斷-雙寫后綴
關(guān)于雙寫
雙寫后綴繞過,這里適用于前后端都對文件的擴展名做了限制。我們可以通過雙寫文件的擴展名,達到繞過的目的。例如:xxx.php=>xxx.pphphp.
用于只將文件后綴名,例如"php"字符串過濾的場合;
例如:上傳時將Burpsuite截獲的數(shù)據(jù)包中文件名【evil.php】改為【evil.pphphp】,那么過濾了第一個"php"字符串"后,開頭的'p'和結(jié)尾的'hp'就組合又形成了【php】。
題目解析
先規(guī)矩的上傳一個php文件,發(fā)現(xiàn)上傳成功
但文件后綴名被過濾了(原先我的文件名字是1.php)
查看源代碼,發(fā)現(xiàn)使用了黑名單機制
如果是文件名被過濾,我們就可以直接利用雙寫來繞過。我們回到我們的文件,將后綴進行兩次寫入,使用雙寫后綴繞過。
兩種方法:
在上傳前,將后綴名改為pphphp
在上傳時,用bp抓包,將filename文件名改為1.pphphp
注意,雙寫一定要在php里面在寫一個php,不能兩個php連著寫,不然兩個php都會被識別,兩個都會被過濾掉
這里使用bp抓包的方法
將filename文件名改為1.pphphp
放包,上傳成功
訪問,發(fā)現(xiàn)代碼執(zhí)行
使用蟻劍連接,尋找flag文章來源:http://www.zghlxwxcb.cn/news/detail-854965.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-854965.html
到了這里,關(guān)于CTFHUB-技能樹-Web前置技能-文件上傳(前端驗證—MIME繞過、00截斷、00截斷-雙寫后綴)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!