宽字节注入
什么是宽字节
多字节字符集就是在多字节字符集中,一部分字节用多个字节来表示,另一部分(可能没有)用单个字节来表示。
宽字节注入时利用mysql的一个特性,使用GBK编码的时候,会认为两个字符是一个汉字
addslashes()函数
addslashes() 函数返回在预定义的字符前添加反斜杠的字符串。
预定义字符是:
单引号(')
双引号(")
反斜杠(\)
NULL
原理
反斜杠''在url中的为%5C,而双字节的GBK在前面加上其他的,如%0E会遇反斜杠组合从而形成一个汉字绕过反斜杠。
例如输入:%DF' ,用于addslashes()的原因,在'前加入\,所有为%DF',由于GBK是两个字节为一个字符,所以%DF'就是%DF%5C%27,而%DF%5C会变成一个中文字符从而绕过了转义。