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

输入框value属性XSS绕过:过滤< >及转义"后的利用方案

解决在value属性中绕过引号转义的XSS问题

针对你遇到的场景——输入被限制在input标签的value属性中,<和>被过滤,双引号"被转义为&quot;——这里有几个可靠的利用思路:

1. 利用HTML实体&quot;闭合属性值(最可靠)

应用只转义了你输入的原生双引号,但不会处理HTML实体形式的引号。你可以输入&quot;,浏览器解析时会把它转换成真实的双引号,从而闭合value属性,接着就能添加事件触发XSS了。

示例payload:

&quot; autofocus onfocus=alert(document.domain) //
  • &quot;:被浏览器解析为",闭合当前value属性
  • autofocus:让输入框自动获得焦点,无需用户点击就能触发事件
  • onfocus=alert(document.domain):触发焦点事件时执行JS代码
  • //:注释掉后续的闭合双引号,避免HTML语法错误

当浏览器解析后,最终的HTML会变成:

<input type="text" value="" autofocus onfocus=alert(document.domain) //">

完全符合语法规范,会自动触发弹窗。

2. 尝试反斜杠转义(依赖浏览器解析)

如果应用没有过滤反斜杠\,你可以用它来转义模板中的闭合双引号,让浏览器认为value属性未闭合,从而解析后续内容为新属性。

示例payload:

\ autofocus onfocus=alert(document.domain) //

浏览器解析时,\会转义后续的闭合双引号,使得value属性未正常闭合,后续的autofocus和onfocus会被识别为新的标签属性。不过这种方法在部分现代浏览器中可能因为严格的HTML解析规则失效,不如第一种方法稳定。

3. 检查单引号是否被过滤(DOM场景适用)

如果应用只转义双引号,未处理单引号',且页面存在JS读取value后插入DOM(比如用innerHTML)或执行代码(比如eval)的逻辑,可以尝试用单引号构造DOM XSS payload。例如:

' onmouseover=alert(1) '

不过这种情况依赖页面的JS处理逻辑,仅当value内容被动态插入到DOM或执行时才会生效。

额外提示

  • 测试时可以用document.domain代替固定字符串,确保能在目标域名下执行,避免跨域问题。
  • 如果alert被过滤,可以尝试confirm(document.domain)或prompt(document.domain)替代。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:22:58