#你真的會PHP嗎
-一進(jìn)頁面,就是have fun,沒什么實質(zhì)性的內(nèi)容,但有標(biāo)題可以知道這是一道與PHP審計有關(guān)的題目。
-查看網(wǎng)頁源代碼,檢查發(fā)現(xiàn)有一個hint,,暗示,應(yīng)該就是我們解題的入手點吧
訪問一下,果然hint里面有提示信息,讓我們來看一下

-可以看出需要我們給出一個數(shù)字,需要滿足下面三個條件,,(這里有好多不認(rèn)識的,百度百度再百度,,,)
1.不為空,且不能是一個數(shù)值型數(shù)字,包括小數(shù)。(由is_numeric函數(shù)判斷)?
2.不能是一個回文數(shù)。(is_palindrome_number判斷)?
3.該數(shù)的反轉(zhuǎn)的整數(shù)值應(yīng)該和它本身的整數(shù)值相等。即:
intval($req["number"])=intval(strrev($req["number"]))
-第二個條件與第三個條件看起來不可能同時成立
-第一個條件可以用%00空字符繞過檢驗
以下有兩種方法
-1.利用intival 函數(shù)繞過
由上面知道是32位系統(tǒng),由其的取值范圍,我們使用-2147483648造成溢出,繞過
32位系統(tǒng)
-2.科學(xué)計數(shù)法構(gòu)造number=0e-0%00
-感覺很難啊,參看了很多大神寫的writeup,極其感謝白大神的友情幫助