首页 > 技术文章 > SQL注入-----宽字节注入

yellowflag 2021-04-18 14:08 原文

宽字节注入

什么是宽字节

多字节字符集就是在多字节字符集中,一部分字节用多个字节来表示,另一部分(可能没有)用单个字节来表示。
宽字节注入时利用mysql的一个特性,使用GBK编码的时候,会认为两个字符是一个汉字

addslashes()函数

addslashes() 函数返回在预定义的字符前添加反斜杠的字符串。

预定义字符是:

单引号(')
双引号(")
反斜杠(\)
NULL

原理

反斜杠''在url中的为%5C,而双字节的GBK在前面加上其他的,如%0E会遇反斜杠组合从而形成一个汉字绕过反斜杠。
例如输入:%DF' ,用于addslashes()的原因,在'前加入\,所有为%DF',由于GBK是两个字节为一个字符,所以%DF'就是%DF%5C%27,而%DF%5C会变成一个中文字符从而绕过了转义。

推荐阅读