宽字节注入原理

宽字节注入产生的原理

宽字节注⼊源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,
这样配置会引发编码转换从⽽导致的注⼊漏洞。具体原理如下:
1,正常情况下当GPC开启或使⽤addslashes函数过滤GET或POST提交的参数时,⿊客使
⽤的单引号 '就会被转义为: ';
2,但如果存在宽字节注⼊,我们输⼊%df%27时⾸先经过上⾯提到的单引号转义变成了
%df%5c%27(%5c是反斜杠),之后在数据库查询前由于使⽤了GBK多字节编码,即
在汉字编码范围内两个字节会被编码为⼀个汉字。然后MySQL服务器会对查询语句进⾏
GBK编码即%df%5c转换成了汉字“運”,⽽单引号逃逸了出来,从⽽造成了注⼊漏洞。

GBK编码导致宽字节注⼊

GBK编码是数据库编码,跟前台的编码⽆关

GBK转UTF-8

原理其实跟前⾯⾥原理⾥说的第2条是⼀样的,我们输⼊%df%27时⾸先经过上⾯提到的
单引号转义变成了%df%5c%27(%5c是反斜杠),然后%df%5c正好属于gbk的汉字编
码范围,经过iconv转换到utf-8编码转换后变成了汉字“運”,从⽽吞掉了反斜杠使得单引
号逃脱出来。

UTF-8转GBK

这⾥我们思考下“錦”这个字,它的utf-8编码是e98ca6,它的gbk编码是%e5%5c,⽽上⾯
提到过反斜杠\正好为%5c。
所以如果我们将title设置为:錦’,⾸先经过addlashes函数或GPC对单引号转义变为:錦
’,然后会经过icnov函数会对”錦”转化为gbk编码,最后就是:%e5%5c%5c%27。反斜
杠被转义了(%5c%5c),从⽽单引号逃逸出来就会引发注⼊漏洞。

练习:http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%DF%27%20and%201=1--+

https://blog.csdn.net/qq_35544379/article/details/78210480

python2 sqlmap.py -u "http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df%27" --level 3 --risk 1 --thread 10

python sqlmap.py -u http://chinalover.sinaapp.com/SQL-GBK/index.php?id=3 --tamper unmagicquotes --dbs

copy自:sqler

嘿嘿

猜你喜欢

转载自www.cnblogs.com/v01cano/p/10423144.html