sql注入常见的waf绕过方式(简版)
一般将安全防护软件划分为:云WAF、硬件waf、主机防护软件、软件waf等。
我的测试流程是先看看waf过滤了什么,例如union select被过滤那么就看看是union被过滤还是select被过滤或者union select连起来被过滤,
如果是过滤了union select,
之后可以尝试大小写绕过,eg: uNIoN sELecT 1,2,3,4
然后在被拦截的关键字前后填充些空白字符,注释符等东西,看看是否还拦截,如果还是拦截的话那么很可能函数或关键字被过滤了,
这样的话可以考虑等价替换,例如在关键字中间可插入将会被WAF过滤的字符 – 例如SELECT可插入变成SEL,
union select变为UNIunionON SELselectECT
整个URL可变成http://www.cesafe.com/index.php?page_id=-15 UNIunionON SELselectECT 1,2,3,4
或将关键词比如and进行两次(服务器自动会对URL进行一次解码,所以需要两次)URL全编码(不是普通编码)
或利用web容器特性绕过,比如IIS的%分割绕过,分块传输、HTTP 数据编码绕过等绕过方式。
过滤了逗号,不能union select 1,2,3
join代替逗号
盲注:利用substring函数和ascii函数搞。。。substring函数无需逗号。
SELECT *from student WHERE id =-1 union SELECT * FROM (SELECT database())a JOIN (SELECT version())b JOIN (SELECT user())c
参考链接:https://blog.csdn.net/weixin_43247256/article/details/122711885
Mysql中\N代表null \N后跟sql语句时可以不用空格或空白字符
&&、|| 为and、 or的符合表示
sql注入宽字节注入
当我们输入id=%df%27,浏览器自动解码后会变成β\',之后会将其转化为16进制,转化为url编码之后为 %df%5c%27,进行url解码(因为是GBK编码,%df和%5c结合为汉字)===> 運',执行sql语句
,%df%5c结合成汉字使单引号闭合(逃逸),进行注入攻击。
完全编码和不完全编码的区别就是对!*'();:@&=+$,/?%#[]字符是否进行编码。
https://www.jianshu.com/p/a2ddd7717e7f
IIS:把我们的电脑看做是一个网络服务器,而IIS就是管理网络信息的服务器管理程序。
asp:服务器端脚本环境
IIS的%分割绕过
参考链接:https://blog.csdn.net/weixin_39901332/article/details/110620799
在asp+iis的环境中存在一个特性,就是特殊符号%,在该环境下当们我输入s%elect的时候,在WAF层可能解析出来的结果就是s%elect,但是在iis+asp的环境的时候,解析出来的结果为select。
考虑分块传输
参考链接:http://www.wjhsh.net/BOHB-yunying-p-12205068.html
进行分块传输的时候,请求头要加上Transfer-Encoding: Chunked,然后POST的数据规则如下
2 #下面的数据的长度,可以在后面加个分号然后添加注释(2; hello world)
id #请求的参数
2 #下面的数据的长度
=1 #请求的值,和前面的id连起来
0 #表明分块请求结束,一个0和两个换行
HTTP 数据编码绕过
参考链接:https://blog.csdn.net/weixin_51730169/article/details/125496226
编码绕过,在绕 waf 中也是经常遇到的,通常 waf 只坚持他所识别的编码,比如说它只识别 utf-8 的字符,但是服务器可以识别比
utf-8 更多的编码。
那么我们只需要将 payload 按照 waf 识别不了但服务器可以解析识别的编码格式,即可绕过。
比如请求包中我们可以更改Content-Type中的charset的参数值,我们改为ibm037这个协议编码,有些服务器是支持的。payload 改成
这个协议格式就行了。
Content-Type: application/x-www-form-urlencoded; charset=ibm037
脚本:
import urllib.parse
s = 'id=-1 union select 1,user()-- &submit=1'
ens=urllib.parse.quote(s.encode('ibm037'))
print(ens)
参考链接:
https://blog.csdn.net/weixin_44825990/article/details/122009176
https://blog.csdn.net/weixin_28979369/article/details/113690696
本文来自博客园,作者:lzstar-A2,转载请注明原文链接:https://www.cnblogs.com/lzstar/p/15399235.html
作 者:lzstar-A2
出 处:https://www.cnblogs.com/lzstar/
关于作者:一名java转安全的在校大学生
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!
欢迎大家关注安全学习交流群菜鸟联盟(IThonest),如果您觉得文章对您有很大的帮助,您可以考虑赏博主一杯可乐以资鼓励,您的肯定将是我最大的动力。thx.

菜鸟联盟(IThonest),一个可能会有故事的qq群,欢迎大家来这里讨论,共同进步,不断学习才能不断进步。扫下面的二维码或者收藏下面的二维码关注吧(长按下面的二维码图片、并选择识别图中的二维码),个人QQ和微信的二维码也已给出,扫描下面👇的二维码一起来讨论吧!!!

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!