众所周知,sqlmap中自带有过waf的脚本以方便测试人员来测试,但我们实际用的并不是很多,而且了解也不多,故而整理一份出来,目前官方自带了58个脚本,目前我的是。。。
space2mssqlblank.py:
将空格随机替换为其他空格符号,内有规则,默认是%01-%0f
select id from users-->select%02id%0efrom%09users
between.py
用NOT BETWEEN 0 AND 替换>
and a > b -- --> and a NOT BETWEEN 0 AND b--
sp_password.py
从T-SQL日志的自动迷糊处理的有效载荷中追加sp_password
and 1=1-- --> and 1=1-- sp_password
charencode.py
对于payload全部字符进行url编码,不处理已编码字符,这里顺便说下一般在url编码过waf的时候,我们会将payload来两次全编码,这样对那些只解码一次的waf还是有点杀伤力的。
and 1=1-- --> %61%6e%64%20%31%3d%31%2d%2d
randomcase.py
随即大小写
select --> sELecT
percentage.py
每个字符前加%
select id -->%s%e%l%e%c%t %i%d
charunicodeencode.py
字符串的unicode编码
SELECT FIELD%20FROM TABLE --> %u0053%u0045%u004C%u0045%u0043%u0054%u0020%u0046%u0049%u0045%u004C%u0044%u0020%u0046%u0052%u004F%u004D%u0020%u0054%u0041%u0042%u004C%u0045
space2comment.py
空格替换为/**/
and 1=1 --> and/**/1=1
equaltolike.py
将=替换为like
and 1=1 -->and 1 LIKE 1
apostrophemask.py
将引号替换为utf-8编码,用于过滤单引号
AND '1'='1 --> AND %EF%BC%871%EF%BC%87=%EF%BC%871
我开始懒了,代码示例要是不是很复杂我就不再举例了阿
base64encode.py
payload进行base64编码
multiplespaces.py
围绕关键字添加几个空格,这个用处不是太大,看看就行
space2plus.py
空格替换为+号,sql语句中语句之间可以用+号连接起来的,故而空格可以此替换
nonrecursivereplacement.py
这个也用处并不大,主要双写查询关键字,现在很鸡肋
space2randomblank.py
替换空格为有效字符%09 %0C %0D %0A
unionalltounion.py
将union all select去掉all,感觉很少用的
securesphere.py
追加特定字符串
and 1=1 --> and 1=1 and "xuanying"="xuanying"
space2dash.py
将空格用–代替,并且添加随即字符串最后加换行符
equaltolike.py
greatest代替>号
and 2>1 -->and greatest(2,1+1)=2
ifnull2ifisnull.py
ifnull(a,b)替换为IF(ISNULL(a),b,a)
IFNULL(1, 2) --> IF(ISNULL(1),2,1)
modsecurityversioned.py
众所周知的内联注释模块,不用多说了
space2mysqlblank.py
替换空格为其他符号
modsecurityzeroversioned.py
还是内联注释,不过是从内联注释的随机字符变为0000
space2mysqldash.py
空格替换为–后跟换行符
bluecoat.py
在payload的随机空格处使用空白符号并且用LIKE替换=号
versionedkeywords.py
将payload中查询语句用内联注释
1 UNION ALL SELECT NULL, NULL, CONCAT(CHAR(5,2) --> 1/*!UNION*//*!ALL*//*!SELECT*//*!NULL*/,/*!NULL*/, CONCAT(CHAR(5,2)
halfversionedmorekeywords.py
在每一个关键字前添加mysql版本注释
UNION --> /*!0UNION/
space2morehash.py
空格替换为# 并且加随机字符串后跟换行符
apostrophenullencode.py
非法双字节unicode字符替换单引号
appendnullbyte.py
payload结束后加null编码,null我记得默认为0,所以最后加的基本就是%00
chardoubleencode.py
之前提到的两次url编码,可以对部分之解码一次的waf无视
unmagicquotes.py
用一个多字节组合%bf%27和替换单引号并且末尾添加注释符号–
randomcomments.py
使用/**/注释来分割关键函数
累了,暂时到这吧,剩下的就下次一定吧,不早了要养生了。