宽字节注入产生原理以及根本原因

江小悠 17 0

1)产生原理:在数据库使用了宽字符集而WEB中没考虑这个问题的情况下,由于0xbf27是两个字符,在PHP中addslash和magic_quotes_gpc开启时会对0x27单引号进行转义,因此0xbf27会变成0xbf5c27。
而数据进入数据库中时,由于OXBF5C是一个另外的字符,因此转义符号会被前面的bf带着"吃掉",单引号由此逃逸出来可以用来闭合语句。

2)根本原因:
character_set_client(客户端的字符集)和character_set_connection(连接层的字符集)不同或转换函数如, iconv、mb_convertencoding使用不当

3)解决办法:统一数据库、Web应用、操作系统所使用的字符集,避免解析产生差异,最好都设置为UTF-8。或对数据进行正确的转义,如 mysql_real_escape_string+mysql set_charset的使用。

发表评论 取消回复
表情 图片 链接 代码

分享