XSS的一些特殊构造技巧:
1.利用字符编码,可以巧妙绕过一些转义。
2.绕过长度限制。比如可以把js代码写在location.hash里面,然后xss构造为 onclick="eval(location.hash.substr(1))";
在某些特殊环境里,还可以用注释符来绕过长度限制。
3.<base>标签,可以劫持掉当前页面所有使用相对路径的标签。<base>标签可以出现在页面的任何地方,并作用于位于该标签后面的所有标签。
4.window.name
对当前窗口window.name对象赋值,没有特殊字符的限制,且很多时候不受同源策略的影响。因此,可以实现跨域,跨页面传递数据,比如
<script> window.name = "alert(document.cookie)"; location.href = "http://www.xssedsite.com/xssed.php" </script>
在同一窗口打开XSS站点后,只需执行下列XSS代码即可:
eval(name);