<from:lake2>

随着技术的发展,ASP数据库插马也不是什么新鲜的东东了,相信阁下也玩过这个的吧。呵呵,那你有没有遇到过插入的asp代码被空格拆开的情况呢(即插入的每个字符之间都出现了空格)?现在,就让我们来解决这个问题。

经过对多例实际情况的分析,我发现只要出现代码被空格隔开的数据库,相应的字段的Unicode压缩属性总是“否”。相反,如过Unicode压缩属性为“是”,则可以通过该字段进行插马。

经过搜索,发现微软官方对Unicode压缩的描述:“Microsoft Access 2000 或更高版本使用 Unicode 字符编码方案来表示文本、备注和超链接字段中的数据。Unicode 将每个字符表示为两个字节……需要的存储空间比在 Access 97 或更早版本中要多……可通过将文本备注超链接字段的“Unicode 压缩属性的默认值设为来弥补 Unicode 字符表达方式所造成的影响”

哦,原来开启了 Unicode 压缩的话,数据库会自动把拉丁字符(西欧语言如英语、西班牙语或德语)用1个字节来存储;如果没开启,数据库就会用2个字节(1个字节为0x00,作为文本将被自动转换为空格)存储拉丁字符,也就造成了插入的asp代码被空格隔开的情况。