记一次堆叠注入
首先,方法是取巧得,并不适用所有情况
有源码,晓得数据库数据表结构
首先有这个一个注入,目标框架ThinkPHP 3.2.3
注入参数pid
但是后面添加)
之后,直接被拦截
可以看到就是百度rasp
测试拦截规则
待检测得字符串长度
在不超过八个字符长度时,不做拦截,此条件优先级应该较高
情况如下
大于等于八个字符时,字符串会进入到else
语句进行正则匹配
这种应该属于,类似正则如下'(.*)\(
,即会被拦截
测试规则
跟随单引号同时出现的
比如select、insert into updatexml
不会被拦截
但是,会拦截完整语法
比如 select 1 from
当完整的语句不跟随单引号出现时,并不会受到拦截
所以单引号是一个很关键的点
其实应该存在不少其他fuzz
绕过的方法
这里不做测试
回到漏洞本身
看以看到,sql
语句中引用了两次我们传入的参数
这就很容易的想到一个方式,就是不输入单引号,通过反斜杠转义,逃逸一个单引号即可
现在橙色部分就是一个参数,所以会爆后面的88888
位置的错误
其实这个时候还是检测函数的
所以这个时候要测试一下,是过滤了所有的[a-zA-Z0-9](.*)\(
还是仅仅过滤了常见的函数
可以看到,过滤的是常见的函数
那么就可以构造语句了,堆叠注入的语句
发现继续被拦截
猜测可能是0x
被拦截
可以换其他的函数,比如char
成功绕过
end
最主要的还是存在两个条件,其实跟rasp没啥关系