文章目录
- 一、等号被过滤
- 二、substr、mid等被过滤
- 三、逗号被过滤
- 四、and/or被过滤
- 五、空格被过滤
- 五、其他绕过方式
一、等号被过滤
- 1、like,rlike语句,其中rlike是正则
- 2、大于号>,小于号<
- 3、符号<>:<>为不等于的意思相当于!=
- 4、采用regexp函数
- 5、in
- 6、between
二、substr、mid等被过滤
-
1、
substring、substrB
-
2、
locate(str1,str2)
返回str1字符串在str2里第一次出现的位置,没有则返回0;
-
- locate(str1,str2,
pos
)
返回str1字符串在str2里pos(起始位置)出现的位置,没有则返回0;
pos必须大于第一次出现的位置,才能显示第二次出现的位置
- locate(str1,str2,
-
3、
position(str1 in str2)
用法与locate类似,返回str1字符串在str2出现的位置,没有则返回0
-
4、
instr( string1, string2 )
#string1:源字符串,要在此字符串中查找。
#string2:要在string1中查找的字符串 。
-
5、
lpad(string , length , pad_string)
、rpad(string , length , pad_string)
#string:被填充的字符串,length:返回的字符串长度,pad_string:填充字符串,是个可选参数
三、逗号被过滤
-
1、采用%EF%BC%8C
%EF%BC%8C这是中文的逗号,大部分不能用,但有些函数可以用 -
2、采用from xx for xx
一般能在mid、substr函数使用
四、and/or被过滤
- 使用&&、||或者like
五、空格被过滤
-
1、注释符绕过:
//, -- , /**/, #, --+, -- -, ;,%00,--a,/*!*/
。
-
- 1.1、
/*!*/
是内联注释,只要里面的数字大于你的数据版本,就会失真。
我这里版本是5.7.26
如图/!23232user()/里面的user()是会被执行的。但当换成63232就大于了版本,就无法被执行了。这方法可以用来绕waf
。
- 1.1、
-
2、换行绕过,例如用%0a
-
3、逻辑括号绕过
五、其他绕过方式
-
1、大小写绕过,如User(),dAtaBASE(),SelEct等。
-
2、只过滤一次时,双重关键字绕过,如selselectect,ununionion,oorr等。
-
3、and/or+空格被替换为空时,andand+空格(oror+空格)绕过。
-
4、编码绕过:如URLEncode编码,ASCII,HEX,unicode编码绕过。