绕waf大全及原理
1. 大小绕过,主要是mysql中关键字大小写不敏感造成
2. 符号绕过and or等。
3. union,where,limit绕过
union绕过主要是添加or扩大查询的范围
where绕过则用limit1,1来绕过
limit过滤了则用group by + having来绕过
主要原理是,group_by的意思是根据by对数据按照哪个字段进行分组,或者是哪几个字段进行分组。
having 主要是起到一个where也就是限制条件的效果
4. group by、绕过
group by绕过就使用group_concat这个函数,这个函数可以把想要输出的所有东西都放在一行来显示。如果只要取其中的某一些数的话,就可以使用substr函数来实现,substr(查询的信息,a,b)ab分别表示要查询的信息的一个范围
5. select及单引号过滤,十六进制过滤
select及单引号过滤的话,可以使用或逻辑符号连接,并使用substr联合一起判断信息的正确与错误,如果屏蔽单引号,则需要使用十六进制来判断即可,若是十六进制也不行,则使用binary函数来绕过。
- 单引号过滤还可以使用编码的方法,将 utf-8 转换为 utf-16 或 utf-32,例如将 ' 转为 utf-16 为�
6. 空格过滤,=号过滤
- 空格过滤可以使用注释符/**/或者URL编码,或者以下这些字符
符号 | 说明 |
---|---|
%09 | TAB 键(水平) |
%0a | 新建一行 |
%0c | 新的一页 |
%0d | return 功能 |
%0b | TAB 键(垂直) |
%a0 | 空格 |
- =号过滤可以使用like关键字,使用语句select * from userinfo where passWord like '%123456%';
- ?id=(sleep(ascii(mid(user()from(2)for(1)))=109))使用括号也可以当做空格
7. 宽字节注入绕过转义函数
在使用PHP连接MySQL的时候,当设置“set
character_set_client = gbk”时会导致一个编码转换的问题,也就是我们熟悉的宽字节注入,当存在宽字节注入的时候,注入参数里带入% DF%27,即可把(%5C,是的URL编码)吃掉
也就是使用%df可以和%5c一起合成一个汉字字符,这样就把原本的转义反斜杠给去掉了
8. 二次注入,绕过过滤。
原理来自数据库的信息同样是不可信的。当前端需要验证数据库的信息时,由例子可以看见不需要判断密码是否正确,只需要判断用户名正确就可以修改密码了。
版权声明:本文为原创文章,版权归 Bill's Blog 所有,转载请注明出处!如相关链接出现404,可以在文章下面评论留言。