百度空间改得没法用了,把自己的一些老文章转过来
半字符问题
例如正确的返回内容应该是
html = "..<\/a>\\u003cimgsrc=1 οnerrοr=alert(\/jxss\/) aa\\u003e<\/p>..."
在前有一个半字符,IE6下把第一个'\'吃掉,变成
html = "..<\/a>\u003cimg src=1 οnerrοr=alert(\/jxss\/)aa\u003e<\/p>..."
而\u003c在js字符串中就是表示'<', 变成
html = "..<\/a><img src=1οnerrοr=alert(\/jxss\/) aa><\/p>...";
插入到dom里面后,就被XSS了。
ie6:
高端浏览(IE>6,chrome等)会对这种字符作特殊处理,下图是chrome的处理:
一般这种字符是没法通过页面操作写进UGC的,攻击者通过构造请求包来达到目的:
修改上传值为[0xc0]\u003cimg src=1οnerrοr=alert(/jxss/) [0xc0]\u003e。
其中[0xc0]代表十六进制的值,篡改请求包时在十六进制状态下修改。