ctf.show 萌新模塊 web3關,此關卡考察的是 intval()函式的特性,以及SQL注入漏洞的利用;首先需要利用 intval()轉換字串的特性繞過校驗,而后利用聯合注入獲取資料庫中的敏感資訊,從而獲取flag,原始碼中過濾了or,加減乘除(+-*/),hex,!等關鍵字,這里推薦使用聯合注入

頁面中給出了原始碼,并提示我們 id=1000 時,就可以拿到flag

原始碼中由兩個關鍵點,首先是intval()函式的轉換,這里可以利用 intval()函式轉換字串時的特性來繞過,而后通過聯合注入控制SQL的執行結果,從而獲取 id=1000時,對應的flag,輸入以下payload
?id=2 union select * from article where id = 1000

intval()函式在轉換整數型別時,如果被轉換的是整數型別,則會直接原樣轉換;如果是字串型別,則會從第一個字符開始轉換,直到遇到非整數型別的字符才會停止;
此處我們傳遞引數 ?id=2 union select * from article where id = 1000 時,后臺的get請求會接收到一個內容為 ‘2 union select * from article where id = 1000’ 的字串,按照intval()函式轉換字串的特性,會轉換成 2,從而使if判斷條件中的 intval($id) > 999 回傳flse,進入else執行SQL陳述句;
執行到SQL陳述句時,由于 id=2 的查詢結果為空,所以整條SQL的查詢記過就只有聯合查詢中 id=1000時的資訊,從而獲取flag
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/298880.html
標籤:其他
下一篇:2021年安全類公眾號合集
