pikachu靶场——Cross-Site Scripting-6 XSS之href和js(Kali系统)

📅 发布时间:2026/7/12 10:03:10 👁️ 浏览次数:
pikachu靶场——Cross-Site Scripting-6 XSS之href和js(Kali系统)
文章目录一XSS 之 href二 XSS 之 js 漏洞原理 攻击载荷 (Payload)核心 Payload详细解析️ 实战步骤 (Pikachu 靶场示例)️ 防御方案前言本文仅用于合法授权的渗透测试场景旨在帮助开发者识别XSS漏洞、提升Web应用安全性严禁用于未授权攻击网络安全无小事违规操作将承担相应法律责任。一XSS 之 href原理同XSS之htmlspecialchars均为在 a 标签的 href 特征中显示的输入值。这里不再赘述。二 XSS 之 js这里主要是将输入的内容在 js 中赋值给 ms。这里就是 xss 突破的地方。它模拟的是反射型XSS的一种特殊场景恶意代码的注入点位于 JavaScript 代码块内部而非普通的 HTML 标签内。这种场景的防御和绕过逻辑与常规 XSS 有所不同。 漏洞原理在这一关中你的输入不会直接显示在 HTML 正文里而是被动态地嵌入到script标签的 JavaScript 代码中。典型后端逻辑PHP 伪代码$ms;if($ms.length!0){if($mstmac){$(#fromjs).text(tmac确实厉害,看那小眼神..)}else{$(#fromjs).text(无论如何不要放弃心中所爱..)}}常规防御失效的原因如果开发者在这里使用htmlspecialchars()函数它只会将,,,,等字符转换为 HTML 实体如。但是浏览器在解析script标签内容时会先执行 JavaScript 代码此时这些 HTML 实体并不会被还原。这导致htmlspecialchars()在 JS 上下文中完全失效。 攻击载荷 (Payload)由于输入点位于 JavaScript 字符串中攻击的核心思路是闭合前面的引号和括号从而跳出原本的字符串限制执行任意 JavaScript 代码。核心 Payload/scriptscriptalert(xss)/script或者利用 JS 语法闭合; alert(xss);//详细解析假设页面源码最终拼接成这样scriptvardata用户输入的内容;// 其他逻辑.../script如果你输入; alert(xss); //拼接后的代码变为scriptvardata;alert(xss);//;// 其他逻辑.../script闭合前面的单引号结束字符串定义。;结束当前的 JS 语句。alert(xss)插入你的恶意代码。//将后面原本的代码如;和)注释掉防止 JS 报错导致代码无法执行。️ 实战步骤 (Pikachu 靶场示例)观察页面输入任意字符如test发现页面没有回显但查看网页源代码可以在script标签中看到你的输入。构造 Payload尝试闭合单引号并弹窗; alert(xss); //或者尝试闭合 script 标签/scriptscriptalert(xss)/script提交并验证点击提交后通常会触发弹窗表示 XSS 攻击成功。️ 防御方案针对“JS输出”这种场景不能依赖 HTML 转义函数如htmlspecialchars而应该使用JavaScript 转义。错误的防御仅用 HTML 转义// 这在 JS 上下文中无效$jsvarhtmlspecialchars($_GET[message],ENT_QUOTES);正确的防御JS 转义在将用户输入插入到 JavaScript 代码中时必须对特殊字符进行反斜杠转义。PHP 中的解决方案使用addslashes()或针对 JSON 格式的json_encode// 方案1: 使用 addslashes$jsvaraddslashes($_GET[message]);// 方案2: 如果输出到 JS 变量中作为字符串推荐使用 json_encode$safe_jsvarjson_encode($_GET[message]);echoscriptvar data $safe_jsvar;/script;通用原则永远在正确的上下文中进行转义。在 HTML 正文用 HTML 转义在 JS 代码块中用 JS 转义在 URL 中用 URL 编码。