高质量的安全文章,安全offer面试经验分享
尽在 # 掌控安全EDU #
作者:掌控安全-hpb1
前言
我们在bypass waf时,例如说mysql的内联注释、还可以用到一些数据库的特性来bypass waf的缺陷。因为waf有一些规则缺陷
探索
查询语句的五个位置:
SELECT * FROM news
WHERE id
=-1位置一
union位置二
select位置三
1,password位置四
from位置五
admin
通过以上语句的位置。
我们来fuzz mysql的特性,来看看哪些字符可以代替空格。
首先是位置一,选中位置一,打开burp来进行跑包。
只这时候看到,位置一
支持代替空格的字符有:%09、%0a、%0b、%0c、%0d、%20、%2e
接下来继续跑位置二
,同样的方法跑,只是换个位置
如下图可以看到支持代替空格的字符有:%09、%0a、%0b、%0c、%0d、%20
跑位置三
,这里看到代替空格的字符有很多,说明这里有多种绕过,
如下图可以看到支持代替空格的字符有:%09、%0a、%0b、%0c、%0d、%20、%21、%2b、%2d、%40、%7e
跑位置四
,如下图可以看到支持代替空格的字符有:%09、%0a、%0b、%0c、%0d、%20
最后一个位置了,我们看看支持的代替空格的字符多嘛?
如下图可以看到支持代替空格的字符有:%09、%0a、%0b、%0c、%0d、%20、%60
了解这些特性之后,我们尝试bypss 安全狗,不过这里尝试union select 的时候被拦截了,我们尝试输入刚刚fuzz出来代替空格的字符。
可以看到%00是不拦截的,waf认为mysql是不执行的,于是不拦截。
那么这时候是不是可以想到一个问题,如果开发不熟悉不同数据库的特性,那么其他类型的数据库是不是就可以绕过了呢。
如下图可以看到oracle、mssql是可以正常查询数据,说明安全狗不了解各个数据库的特性,于是通过数据库特性进行bypass了。
实战绕过安全狗
前面我们知道数据库的特性,接下来我们来继续bypass waf,
首先先来查询注入点在哪,用and 1=2语句时拦截,and 1也拦截,
直接写and又不拦截,说明and后面出现字符时会拦截。
这时候我们可以使用其他函数like来进行判断注入点,可以看到like可以正常判断。
接下来继续判断字段数,order by 1时拦截,使用内联注释似乎也不可以,
这时候GET无从下手时,可以转换传参进行尝试绕过,不同传参正则是不一样的。
转成post传参后,我们再尝试order by 1,发现拦截,orderby不拦截,
这时候尝试注释符来代替空格,看看是否绕过?
可以很明显看到绕过了。
知道字段数后我们继续联合查询,发现union select拦截,unionselect也拦截,说明常规手段绕不过了
这里其实有多种绕过方法,例如协议绕过,或者是特殊字符编码绕过,
这次就简单分享一下注释和随便几个字符的绕过。
下图可以看到出现输出点了
尝试进行数据库的查询,这时候可以发现被拦截了
我们来看看拦截了什么?
去掉括号不拦截,说明拦截括号
尝试使用注释符号代替空格,发现也拦截了
前面我们随便输入一些字符就绕过联合查询,那我们是不是也可以在注释里随便添加字符绕过呢?事实证明是可以的。
成功查询到库名。
最后我们再尝试查询字段内容,可以看到被拦截了。
这里我们继续删掉一些字符,看看拦截了什么,admin删掉就不拦截了,
那直接fromadmin呢,发现不拦截,那么这里只需要找出代替空格字符就可以绕过了,这里使用注释符
如下图可以看到,查询到数据了。
文末
本人只是简单介绍了数据库的特性,以上这些远远是不够的。
只是简简单单提供了一个思路,仅作抛砖引玉之用,希望对你有所帮助...
回顾往期内容
扫码白嫖视频+工具+进群+靶场等资料
扫码白嫖!
还有免费的配套靶场、交流群哦!
本文始发于微信公众号(掌控安全EDU):探索数据库的特性Bypass WAF
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论