百度空间改得没法用了,把自己的一些老文章转过来


半字符问题
  
    例如正确的返回内容应该是
html = "..<\/a>\\u003cimgsrc=1 onerror=alert(\/jxss\/) aa\\u003e<\/p>..."
    在前有一个半字符,IE6下把第一个'\'吃掉,变成
html = "..<\/a>\u003cimg src=1 onerror=alert(\/jxss\/)aa\u003e<\/p>..."
    而\u003c在js字符串中就是表示'<', 变成 
html = "..<\/a><img src=1onerror=alert(\/jxss\/) aa><\/p>...";
    插入到dom里面后,就被XSS了。
ie6:

  

ie6 半字符攻击


     高端浏览(IE>6,chrome等)会对这种字符作特殊处理,下图是chrome的处理:

 

ie6 半字符攻击

 

         一般这种字符是没法通过页面操作写进UGC的,攻击者通过构造请求包来达到目的:
修改上传值为[0xc0]\u003cimg src=1onerror=alert(/jxss/) [0xc0]\u003e。
其中[0xc0]代表十六进制的值,篡改请求包时在十六进制状态下修改。

相关文章: