背景:某客户系统存在AES加密,利用autoDecoder插件实现了自动加解密后发现了一处order by参数可控,由于系统无回显具体报错信息等信息,后续选择使用除零报错的盲注方法成功实现SQL注入。

系统数据包为请求响应加密:

前端JS逆向:
搜索关键字encrypt进行断点:

控制台打印出key和iv:

此处得到key和iv,均为同一个值,且为数组形式,转为明文:

这里用到autoDecoder插件:

测试可正常加解密

这里在burp的proxy窗口也是自动解密成明文,这里发现一个oderBys的参数并且可控
此处先换成数字判断字段数:


此处可22正常回显,23报错,初步判断此处参数可控并且存在order by注入


这里将desc换成1依旧正常回显,但明显长度不一致了,但说明了此处可控

使用exp()函数判断数据库:


这里exp(709)和exp(710)都报错,正常来说exp(709)是正常回显,说明此处不是Mysql数据库



这里exp(290)正常回显,exp(291)报错,说明该系统为Oracle数据库
因为不回显报错语句,此处只能盲注,下面使用除零盲注判断用户名长度:

Payload:1/decode(length(user),xxx,1,0)



此处5正常返回,说明数据库用户名长度为5,至此点到为止。