1.宽字节
GB2312,GBK,GB18030,BIG5,Shift JIS等这些都是常说的宽字节,实际上只有两字节。宽字节带来的安全问题主要是吃ASCII字符(一字节)的现象。
GBK是一种多字符的编码,通常来说,一个gbk编码汉字,占用两个字节,一个utf-8编码的汉字,占用三个字节,当将页面编码保存为gbk时输出2,utf-8时输出3,除了gbk以外,所有ascii编码都是两个字节。
2.宽字节注入原理
宽字节注入主要是源于程序员设置数据库编码与php编码设置为不同的两个编码,这样就可能会产生宽字节注入。GBK占用两个字节,ASCII占用一个字节。php中编码为GBK,函数执行添加的是ASCII编码(添加的符号为""),MYSQL默认的字符集市GBK等宽字节字符集。
输入%df%27,本来\ 会转义%27(’),但(其中的\十六进制是%5C)的编码位数是92,%df的编码位数是223,%df%5C符合gbk取值范围(第一个字节129~254,第二个字节64-254),会解析为一个汉字“運”,这样\就会是去应有的作用。
宽字节注入
最新推荐文章于 2023-10-10 12:37:18 发布