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

如何利用XSS执行alert弹窗?针对给定PHP代码的技术求助

问题分析

先拆解目标PHP代码的过滤逻辑:

  • 对q1/q2的过滤仅触发于**参数值同时包含<和>**时,此时会调用htmlentities()将特殊字符转义为HTML实体;
  • 如果参数只含其中一个符号、或两个都不含,则直接输出原始内容。

你之前用带<>的完整标签失败,就是因为同时触发了转义规则,脚本标签被转义后失去执行能力。


可行XSS实现方案

方案1:使用不闭合的标签(仅含<,规避转义)

给q1或q2输入以下payload:

<img src=x onerror=alert(1)

或

<svg onload=alert(1)

原理:

  • payload仅包含<,没有>,不会触发过滤,原始内容直接输出;
  • 浏览器解析HTML时会自动补全不完整标签:<img>的src=x加载失败触发onerror事件,<svg>加载完成触发onload事件,都会执行alert(1)。

方案2:利用HTML事件属性(不含<>,完全绕过过滤)

给q1或q2输入以下payload:

" onclick=alert(1)

或

' onmouseover=alert(1)

原理:

  • payload不含<和>,直接输出到页面后会修改文本节点上下文,例如拼接后变为:
Some people say: " onclick=alert(1) <br/>
  • 点击文本时触发onclick事件,或鼠标悬浮时触发onmouseover事件,执行弹窗。

方案3:拆分脚本到两个参数(进阶玩法)

  • q1输入:<script>(仅含<,不被转义)
  • q2输入:alert(1)(无<>,不被转义)
    原理:
    输出后页面会拼接为:
Some people say: <script> <br/>
Others say: alert(1)

浏览器会将<script>标签与后续的alert(1)识别为同一段可执行脚本,触发弹窗。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 12:05:08