第26關使用GET請求提交引數,我們可以直接在url地址欄中構造payload
原始碼中過濾了or,and,/*,#,--,空格,斜線,需要想辦法繞過
![]()

![]()
過濾了注釋(#,--),我們可以不用注釋,使用單引號閉合,使SQL語法結構成立
過濾了空格,我們可以使用括號()來代替空格
在url地址欄中輸入payload 1'anandd'1,正常顯示;輸入 1'anandd'0時,空顯示;說明用戶輸入的引數可以使SQL恒成立或恒不成立從而影響SQL的執行結果,即存在注入,注入點為單引號字符型注入
原始碼中的SQL如下
![]()
當我們輸入1'anandd'1時,后端過濾掉and和空格后拼接的SQL是這樣
![]()
and后面的'1'會轉換為true,使SQL恒成立,可以正常查詢處用戶資料并顯示到頁面

當我們輸入1'anandd'0時,后端過濾掉and和空格后,拼接的SQL是下面這樣
![]()
and后面的'0'會轉化為false,使SQL恒不成立,SQL查詢不到用戶的資料,會在頁面顯示為空

確認了注入點后,我們就可以使用報錯注入進行脫庫了,由于原始碼中過濾了空格,需要將payload中的空格替換為括號()
1' aandnd(updatexml(1,concat(0x7e,
(select(group_concat(schema_name))from(infoorrmation_schema.schemata))
),1))aandnd'

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/294132.html
標籤:其他
