Once More分值:10
- 來源: iFurySt
- 難度:易
- 參與人數:4782人
- Get Flag:2123人
- 答題人數:2166人
- 解題通過率:98%
hint:ereg()函數有漏洞哩;從小老師就說要用科學的方法來算數。
格式:CTF{}
解題鏈接: http://ctf5.shiyanbar.com/web/more.php
原題鏈接:http://www.shiyanbar.com/ctf/1805
【解題報告】
這是我入門Web開始寫的第十道題,一眼看過去,這是一道php代碼審計的題目,代碼審計其實還挺好玩的,能夠學到很多東西QAQ!
我們打開解題鏈接,界面如下:
這題要你輸入password,我們可以先試試,123看看對不対,顯然,肯定不對,我們該怎么辦呢?我們看到這個頁面可以看到源碼,我們點擊view the source code,我們看到了一些比較有意思的東西,首先是ereg函數,這個函數有個漏洞,等下我們就會說到!
下面先讓我們理一理這個password的條件吧!
首先是輸入的字符在a~z,A~Z,0~9之間,也只屬於這個條件里,其次密碼長度要小於8,值要大於9999999,這不很矛盾嘛?中學的時候我們有學過科學記數法,這題用科學記數法表示不就解決了問題嘛?我們再看下一個條件,密碼一定要包含*-*,這個條件似乎和第一個條件沖突了啊,那這題就沒法做了?
剛才我們提到了ereg函數,這個函數有個很大的毛病,可以截斷,我們可以使用BP或者之前學到的00截斷來進行操作,所以我們可以寫出以下password:
9e9%00*-*
輸入以后點擊check,會提示這么一行信息。。。。
輸入的密碼不合法,然后我們可以看到這個網址password,傳參數的時候%00自動改成了2500,這個也是瀏覽器的一個漏洞,我們只需要在網址上進行修改就行了!
這樣就得到了Flag!