ctf.show 萌新模塊 web6關,這一關的考點是intval()函式轉換字串的特性,以及SQL注入漏洞的繞過方式,原始碼中過濾了單雙引號,or,加減乘除號,嘆號,異或,hex,select等關鍵字,推薦使用二進制繞過
頁面中展示了部分原始碼,并提示我們 id=1000 時,就是flag

這里先上答案,payload如下
?id=0b1111101000

接下來詳細解釋一下解題的思路,首先是利用intval()函式轉換字串的特性進行繞過
intval()函式在轉換字串時,如果被轉換的變數是字串型別,則會從第一個字符開始轉換,直到遇到非整數的字符才會停止
![]()
后端使用get請求獲取我們輸入的引數,回傳的變數是字串型別 ‘0b1111101000’
![]()
被intval()函式轉換后的結果是 0
![]()
if()判斷的實際條件是 0 > 999, 回傳false,從而進入else中執行SQL陳述句
我們構造的payload拼接到SQL中會是下面這樣
![]()
這個 0b1111101000 是1000的二進制,資料庫在執行SQL時,會將0b開頭的資料當成二進制來執行,從而查詢 id=1000 時的資訊,拿到我們的flag
進制的書寫格式/進制的前綴
二進制:0b010101
八進制:0O123
十進制:123
十六禁止:0x123
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/299130.html
標籤:其他
上一篇:ctfshow-萌新-web9( 利用命令執行漏洞讀取網站敏感檔案)
下一篇:網路基礎(二)
