sqli-labs(十二)(and和or的过滤)


 

第二十五关:

这关是过滤了and 和or

输入?id=1' or '1'='1

发现or被过滤了,将or换成and也一样。

输入?id=1' oorr '1'='1

 

这样就可以了,将一个or置空后,oorr还是会变成or。

其实感觉这关有点问题就是,这关可以利用联合注入来查询,其实根本不需要and和or的,and和or只是测试的时候初步判断注入的一种方法,不是需要的步骤。

只有当联表查询不能用的时候,必须使用报错注入或盲注的时候,才会必须使用and和or。

有时候程序过滤and和or的时候不是置空 而是用空格代替的话,我们上面的方法就不适用了。

这个时候可以使用&&代替and  使用||代替or。

直接使用||是没有问题的,但是&&需要使用url编码为%26%26  ,因为&在url中往往后面接参数,web服务器会将&后面的当成另一个参数。

 

第二十五a关:

和第二十五关一样,只不过关闭了报错信息,是一个盲注。

 

第二十六关:

输入?id=1' or '1'='1 #  发现空格和or以及#都被过滤了,继续尝试发现--  /*也被注释了

注释被过滤,可以使用闭合的方法,现在的重点是怎样绕过空格被过滤的办法,正常会使用/**/来替代空格,但是现在被过滤了

使用脚本测试下哪些编码是可以使用的,

其中%a0网上说是可以替代空格的,但是我尝试了 不行啊。。。 感觉和数据库版本有关吧

这里可以使用通过来不是用空格的

输入?id=0'||extractvalue(1, concat(0x5c, (database())))||'1'='1

输入?id=0'||extractvalue(1, concat(0x5c, (select(group_concat(schema_name))from(infoorrmation_schema.schemata))))||'1'='1

 

值得注意的是,这里用的了information_schema数据库名中包含了or,会被过滤,需要使用infoorrmation_schema来绕过。

 

第二十六a关:

和第26关一样,只是需要将报错注入改为盲注。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM