You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XSS payload无法执行:未定义函数致onchange失效,求可利用payload

解决方法

核心思路是利用JavaScript函数调用的参数优先求值特性:函数的参数表达式会在尝试调用函数之前被执行,哪怕目标函数不存在,参数里的代码也会先运行。

直接将*位置替换为以下payload即可:

alert(1)

替换后的完整onchange属性代码为:

<select name="sub_subissues" id="_subsubissues" onchange="com.test.admin.web.widgets.functionTest(alert(1))" style="height:30px;">

原理说明

当触发onchange事件时,JavaScript引擎会先执行参数位置的alert(1),成功弹出提示框;之后才会尝试调用未定义的com.test.admin.web.widgets.functionTest,此时即使抛出ReferenceError,也不影响已经执行的alert。

额外优化(可选)

如果担心alert的返回值(undefined)可能引发额外问题,可以用逗号运算符构造一个合法参数值,确保语法完全正确:

(alert(1), 0)

替换后代码为:

<select name="sub_subissues" id="_subsubissues" onchange="com.test.admin.web.widgets.functionTest((alert(1), 0))" style="height:30px;">

这里逗号运算符会先执行alert(1),再将0作为参数传入函数,既保证alert执行,也避免了参数值可能的语法问题。

内容的提问来源于stack exchange,提问作者joao silva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 19:12:42