关注我们

宽字节注入详解分析

子杰子杰 渗透测试 2018-10-08 380371 0

宽字节注入详解分析

简介  宽字节注入,它的作用可以绕过转义,也是绕过转义的其中一个办法  宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,php代码:mysql_query("SET


宽字节注入,它的作用可以绕过转义,也是绕过转义的其中一个办法

  宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,php代码:mysql_query("SET NAMES 'gbk'");这样配置会引发编码转换从而导致的注入漏洞。(GBK导致的问题)

  utf-8 3个字节

  gbk 2个字节

  具体原理如下:

  当GPC开启(php.ini

  magic_quotes_gpc = On)或使用addslashes函数过滤提交的参数时,测试注入点使用的单引号 ' 就会被转义为: \'

  这个的作用就是对敏感函数的转义,让我们无法注入。

  如果存在宽字节注入,我们输入%df%27时首先经过上面提到的转义就会变成%df%5c%27(%5c就是反斜杠)。之后再数据库查询由于使用了GBK多字节编码,即在汉字编码范围内两个字节会被编码为一个汉字,然后MySQL服务器会对查询语句进行了GBK编码%df%5c转换成汉字,而单引号逃出了,这个时候就可以注入了。

  %df不是固定的,可以自己组合。只要是汉字就可以。

  测试存在宽字节注入,下面就是使用办法。

宽字节注入详解分析

宽字节注入图1

宽字节注入详解分析

宽字节注入图2

  用工具就是把链接直接丢到sqlmap里面如:http://localhost:8080/sql1/sql1.php?title=1%bb 后面的%bb不能去掉。

  -----------------------------------------------------------------

  摘抄:

  宽字节注入原理:

  GBK 占用两字节

  ASCII占用一字节

  PHP中编码为GBK,函数执行添加的是ASCII编码,MYSQL默认字符集是GBK等宽字节字符集。

  输入%df和函数执行添加的%5C,被合并成%df%5C。由于GBK是两字节,这个%df%5C被MYSQL识别为GBK。导致本应的%df\变成%df%5C。%df%5C在GBK编码中没有对应,所以被当成无效字符。

  %DF’ :会被PHP当中的addslashes函数转义为“%DF\'” ,“\”既URL里的“%5C”,那么也就是说,“%DF'”会被转成“%DF%5C%27”倘若网站的字符集是GBK,MYSQL使用的编码也是GBK的话,就会认为“%DF%5C%27”是一个宽字符。也就是“縗’”

  例如:http://www.xxx.com/login.php?user=%df’ or 1=1 limit 1,1%23&pass=

  其对应的sql就是:

  select * fromcms_user where username = ‘運’ or 1=1 limit 1,1#’ and password=”

  获取信息办法:13:10083/index.php?id=-10%df' union select 1,databases()%23


版权声明

本文仅代表作者观点,不代表黑白网立场。
如文章侵犯了您的权利,请通过邮箱联系我们删除
E-Mail:server@heibai.org
黑白网官群:238921584

喜欢1发布评论

评论列表

发表评论

  • 昵称(必填)
  • 邮箱
  • 网址
  • 验证码(必填)