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

![]()
過濾了or和and,但只過濾了一次,可以使用雙寫來繞過
過濾了--,#注釋,可以使用單引號閉合,確保SQL語法結構正確
在url地址欄中輸入 1' aandnd'1,頁面正常顯示;再輸入 1' aandnd'0,頁面空顯示;也就是說用戶可以通過修改引數使SQL恒成立或恒不成立,從而改變SQL的執行結果,即存在SQL注入,注入點為單引號+括號的字符型注入
原始碼的SQL如下
![]()
當我們輸入 1' aandnd'1時,后端過濾掉了一個and,拼接成下面這樣
![]()
and后面的'1'會轉換成true,使SQL恒成立,從而正常查詢出用戶資訊并在頁面中展示出來

當我們輸入 1' aandnd'0時,后端代碼過濾掉一個and后,將引數拼接到SQL中,是下面這樣
![]()
and后面的'0'會轉換為false,使SQL恒不成立,從而查詢不到用戶資訊,導致頁面空顯示

確認了注入點后,我們使用布爾盲注來脫庫
1'aandnd(length(database())>1)anandd'1

以此增加長度,資料庫名的長度大于8時,空顯示,這就意味著條件不成立,也就是長度不大于8
1'aandnd(length(database())>8)anandd'1

由此公式可繼續脫庫脫表
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/294134.html
標籤:其他
