一、注釋符號繞過
在sql中常用的注釋符號有
--、#、/*xxx*/、
二、大小寫繞過
當web正則過濾的時候對大小寫不敏感的情況下使用,一般很少會有這種漏洞
比如當過濾了select的時候我們可以采用SEleCT來查詢
三、內聯注釋繞過
把要使用的查詢語句放在/*。。。*/中,這樣在一般的數據庫是不會執行的,但是在mysql中內聯注釋中的語句會被執行。
四、雙寫關鍵字繞過
有的waf只會對關鍵詞過濾一次,這時候采用雙寫的方式可以繞過。
selselectect * from user; 過濾select后變成 select * from user;
五、特殊編碼繞過
十六進制:
select * from users where username = 0x7a68616e677961;
ascii編碼繞過
六、空格過濾繞過
/**/ ,(),`,tab,兩個空格
一定要注意在使用()繞過的時候,括號里邊不能有*號
七、or and xor not 過濾繞過
and = && or = || xor = | # not = !
八、=號過濾繞過
=號和不加通配符的 like 是一樣的。
還可以使用 < >號來繞過
<> 在mysql中等於!= 如果在加一個! 雙重否定代表肯定 就是= 了
strcmp(str1,str2):若所有的字符串均相同,則返回STRCMP(),若根據當前分類次序,第一個參數小於第二個,則返回 -1,其它情況返回 1
between關鍵字
九、引號被過濾
使用十六進制過濾,同上。
常用在web應用使用的字符集為GBK
時,並且過濾了引號,就可以試試寬字節。
十、逗號被過濾
正常情況下的substr表達式是substr(str1,start,long)
可以使用一個替代逗號的方法就是使用from pos for len
,其中pos代表從pos個開始讀取len長度的子串
使用offset關鍵字
適用於limit
中的逗號被過濾的情況
limit 1,2表示從第二行開始,取兩行。limit 1 offset 5 表示從第六行開始取一行。
暫時這么多,日后更新。