上傳繞過分值:10
- 來源: Justatest
- 難度:易
- 參與人數:5847人
- Get Flag:2272人
- 答題人數:2345人
- 解題通過率:97%
bypass the upload
格式:flag{}
解題鏈接:http://ctf5.shiyanbar.com/web/upload
原題鏈接:http://www.shiyanbar.com/ctf/1781
【解題報告】
這是我入門Web開始寫的第二道題,這道題有點意思,它的題目意思是要上傳一個文件,具體要上傳什么文件題目也沒說,我們就隨意上傳一個txt文本文檔,點submit,題目會顯示"不被允許的文件類型,僅支持上傳jpg,gif,png后綴的文件"的字樣,這時我們就新建一個1.jpg文件,然后點擊submit上傳,然后會有以下提示信息:
,這不是在逗我玩嘛,怎么又上傳php文件啊,你再新建一個1.php文件上傳,會跳出類似的要上傳.jpg文件的字樣,這時候你就會發現問題了,什么問題呢?這句話前后是矛盾的~~~
題目名字為上傳繞過,意思就是要繞過這個提示的界面,這里涉及到一個很有意思的知識,叫做00截斷,什么是00截斷呢?在這里我簡單給大家介紹一下~~~
00截斷是文件后綴名就一個%00字節,可以截斷某些函數對文件名的判斷,在許多語言函數中,處理字符串的函數中0x00被認為是終止符。
例如,網站上傳函數處理xxx.php%00.jpg時,首先后綴名是合法的jpg格式,可以上傳,在保存文件時,遇到%00字符,丟棄后面的jpg,文件后綴最終保存的后綴名為xxx.php
例如:head.php.jpg,head.php_.jpg,head.php%00.jpg
我們如何做這題呢?首先我們要用到一個截斷工具,Burp Suite,同時我們需要一個代理工具,瀏覽器火狐的一個代理,打開火狐瀏覽器,火狐瀏覽器代理需要設置端口,使得端口和我們Burp Suite設置的端口要一致,我們設置端口為8080,這樣網站的包就會被我們抓取下來~~~
然后我們開啟Intercept,點擊文件上傳,這時我們會發現頁面沒有跳轉,說明這個包已經被我們攔截下來了,然后我們再把這個包發送到Repeater里面去,對這個包進行一個分析,然后這時我們可以用到00截斷,自己手動構造一個上傳的文件,1.php .jpg,然后我們去Hex查看,發現只需要把20改為00,再回到Raw,發現空格已經變成一個框框,框框表示一個空字節,這時我們只需要Go一下,發送文件過去,然后我們可以看到如下界面:

恭喜你獲得flag一枚,咱們只需要提交這個flag就可以完成此題

這題就是運用到一個上傳的思想,
