前言
SQL在CTF每一次比赛中基本上都会出现,所以有了这一篇总结,防忘,最后更新于2018/10/11。
简而言之:SQL注入用户输入的数据变成了代码被执行
sql注入绕过
以下绕过方式可自己在虚拟机搭建一个mysql数据库环境,实际操作练习;
注释符号绕过
常用的注释符有
实例
大小写绕过
waf
的正则对大小写不敏感的情况,一般都是题目自己故意这样设计。例如:waf过滤了关键字
select
,可以尝试使用Select
等绕过。内联注释绕过
/*!...*/
中,这样这些语句如果在其它数据库中是不会被执行,但在MYSQL中会执行。双写关键字绕过
waf
中,将关键字select
等只使用replace()
函数置换为空,这时候可以使用双写关键字绕过。例如select
变成seleselectct
,在经过waf
的处理之后又变成select
,达到绕过的要求。特殊编码绕过
ascii编码绕过Test
等价于CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116)
tip:好像新版mysql不能用了
空格过滤绕过
过滤or and xor not 绕过
过滤等号=绕过
通配符
的like
执行的效果和=
一致,所以可以用来绕过。like
:like
可以用来取代=
:用来取代
=
时,rlike
的用法和上面的like
一样,没有通配符效果和=
一样regexp:MySQL中使用 REGEXP 操作符来进行正则表达式匹配
使用大小于号来绕过
<> 等价于 !=
所以在前面再加一个!
结果就是等号了
等号绕过也可以使用strcmp(str1,str2)函数、between关键字等,具体可以参考后面的过滤大小于号绕过
过滤大小于号绕过
在sql盲注中,一般使用大小于号来判断ascii码值的大小来达到爆破的效果。但是如果过滤了大小于号的话,那就凉凉。怎么会呢,可以使用以下的关键字来绕过
-
greatest(n1, n2, n3…):返回n中的最大值
-
least(n1,n2,n3…):返回n中的最小值
-
strcmp(str1,str2):若所有的字符串均相同,则返回STRCMP(),若根据当前分类次序,第一个参数小于第二个,则返回 -1,其它情况返回 1
过滤引号绕过
-
使用十六进制
-
宽字节
常用在web应用使用的字符集为GBK
时,并且过滤了引号,就可以试试宽字节。
过滤逗号绕过
sql盲注时常用到以下的函数:
substr()
substr(string, pos, len):从pos开始,取长度为len的子串
substr(string, pos):从pos开始,取到string的最后
substring()
用法和substr()一样
mid()
用法和substr()一样,但是mid()是为了向下兼容VB6.0,已经过时,以上的几个函数的pos都是从1开始的
left()和right()
left(string, len)和right(string, len):分别是从左或从右取string中长度为len的子串
limit
limit pos len:在返回项中从pos开始去len个返回值,pos的从0开始
ascii()和char()
ascii(char):把char这个字符转为ascii码
char(ascii_int):和ascii()的作用相反,将ascii码转字符
from pos for len
,其中pos代表从pos个开始读取len长度的子串例如在
substr()
等函数中,常规的写法是from pos for len
来取代join
关键字来绕过使用like
关键字
适用于substr()
等提取子串的函数中的逗号
适用于
limit
中的逗号被过滤的情况limit 2,1
等价于limit 1 offset 2
过滤函数绕过
-
sleep() -->benchmark()
-
ascii()–>hex()、bin()
替代之后再使用对应的进制转string即可 -
group_concat()–>concat_ws()
-
substr(),substring(),mid()可以相互取代, 取子串的函数还有left(),right()
-
user() --> @@user、datadir–>@@datadir
-
ord()–>ascii():这两个函数在处理英文时效果一样,但是处理中文等时不一致。
转载自:https://blog.csdn.net/huanghelouzi/article/details/82995313
本文始发于微信公众号(LemonSec):sql注入绕过方法总结
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
2021年6月21日 下午10:23 1F
收藏了
2021年6月22日 上午12:35 B1
@ bowman 你不会是机器人吧
2021年6月24日 下午9:54 2F
收藏了,