SQL注入之绕过条件过滤

2019-12-19 8,970

一,前言


随着网站开发人员的安全意识的提高,纷纷使用了各种防注入的手段。最简单的就是条件过滤了。

条件过滤,顾名思义就是黑名单机制,过滤掉符合条件的语句。因此我们要想办法绕过过滤,用其他方式来实现注入。


二、实验


1、GET-基于错误-过滤注释

    

    image.png

    

    根据提示:我们输入 id=1,得到结果


    image.png


    习惯性输入 id=1',得到结果


    image.png


       发现报错,使用联合查询获取其他有用信息,前提要注释掉后面的 ‘LIMIT 0,1 ,但是这里的代码过滤了注释。我们试试输入 id=1'or'看看能不能用布尔方式。


    image.png


    布尔方式成功,那么我们就用GET盲注中的布尔注入,id=1' and (select DATABASE()='security') or'


    image.png


    成功了,由于布尔按真假判断,那我们又三个判断,分别是 id,and 和 or'' ,这里的or ''恒为真,当ID为真的时候,控制真假结果就取决于and的值,则符合布尔注入。


2、GET - 基于错误 - 过滤OR&AND - 单引号


image.png


我们用上一节提到方法 id=1' and (select DATABASE()='security') or'   


image.png


发现报错

证明这次过滤了 and 和 or ,那我们就无法进行布尔判断了。此处可以使用替代的办法,即使用『&&』替代『and』,『||』替代『or』。此处还有个问题,就是preg_replace按照代码中的用法是无限次替换的,但实际中却可以使用『oorr』这样来绕过。


本文作者:伟大娃娃

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/120856.html

Tags:
评论  (0)
快来写下你的想法吧!

伟大娃娃

文章数:1 积分: 30

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号