0x00什么是寬字節(jié)?
即用兩個(gè)字節(jié)儲(chǔ)存一個(gè)字符
比如GB2312,GBK,GB18030,BIG5,Shift_JIS
高8位>128
0x01寬字節(jié)注入原理

image.png
0x02程序上的體現(xiàn)(白盒)
1.mysql編碼為雙字節(jié)編碼
mysql_query("SET NAMES gbk");
2.使用preg_replace進(jìn)行轉(zhuǎn)義
$string = preg_replace('/'. preg_quote('\\') .'/', "\\\\\\", $string);
$string = preg_replace('/\'/i', '\\\'', $string);
$string = preg_replace('/\"/', "\\\"", $string);
3.使用addslashes進(jìn)行轉(zhuǎn)義
$string= addslashes($string);
4.使用mysql_real_escape_string進(jìn)行轉(zhuǎn)義
$string= mysql_real_escape_string($string);
0x03防御寬字節(jié)注入
1.使用utf-8
2.mysql_real_escape_string,mysql_set_charset('gbk',$conn)
3.設(shè)置參數(shù),character_set_client=binary