码迷,mamicode.com
首页 > 数据库 > 详细

宽字节SQL注入

时间:2018-07-10 01:17:37      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:mysq   数据库查询   ddl   产生   strong   过滤   连接   转义   char   

注入产生的原理:

数据库设置为GBK编码:

  宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而导致的注入漏洞.

  1、正常情况下,当GPC开启或者使用addslashes函数会过滤GET或POST提交的参数时,黑客使用的单引号(‘)会被转义成:\‘;

  2、但如果存在宽字节注入,我们输入%df%27时,首先经过上面提到的单引号转义变成了%df%5c%27(%5c是反斜杠),之后在数据库查询

    前由于使用了GBK多字节编码,即在汉字编码范围内两个字节会编码为一个汉字.从而造成注入漏洞.

 

数据库设置为UTF-8编码:

  utf-8转GBK

  这里思考下“锦”这个字,它的utf-8编码是e98ca6,它的gbk编码是%e5%5c,而上面提到过反斜杠\正好为%5c.所以如果我们将title设置

为:‘錦‘,首先经过addlashes函数或GPC对单引号转义变为:錦\‘, 然后会经过iconv函数会对"錦"转化为gbk编码,最后就是%e5%5c%5c%27.

反斜杠被转义了(%5c%5c),从而单引号逃逸出来就会引发注入漏洞。

 

宽字节SQL注入

标签:mysq   数据库查询   ddl   产生   strong   过滤   连接   转义   char   

原文地址:https://www.cnblogs.com/blacksunny/p/9286811.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!