当前位置: 首页 > news >正文

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($ms=='tmac'){$('#fromjs').text('tmac确实厉害,看那小眼神..')}else{$('#fromjs').text('无论如何不要放弃心中所爱..')}}

常规防御失效的原因:
如果开发者在这里使用htmlspecialchars()函数,它只会将<,>,&,",'等字符转换为 HTML 实体(如<)。但是,浏览器在解析<script>标签内容时,会先执行 JavaScript 代码,此时这些 HTML 实体并不会被还原。这导致htmlspecialchars()在 JS 上下文中完全失效。

💥 攻击载荷 (Payload)

由于输入点位于 JavaScript 字符串中,攻击的核心思路是闭合前面的引号和括号,从而跳出原本的字符串限制,执行任意 JavaScript 代码。

核心 Payload
</script><script>alert('xss')</script>

或者利用 JS 语法闭合:

'; alert('xss');//
详细解析

假设页面源码最终拼接成这样:

<script>vardata='用户输入的内容';// 其他逻辑...</script>

如果你输入'; alert('xss'); //,拼接后的代码变为:

<script>vardata='';alert('xss');//';// 其他逻辑...</script>
  • ':闭合前面的单引号,结束字符串定义。
  • ;:结束当前的 JS 语句。
  • alert('xss'):插入你的恶意代码。
  • //:将后面原本的代码(如';))注释掉,防止 JS 报错导致代码无法执行。

🛠️ 实战步骤 (Pikachu 靶场示例)

  1. 观察页面:输入任意字符(如test),发现页面没有回显,但查看网页源代码可以在<script>标签中看到你的输入。
  2. 构造 Payload:
    • 尝试闭合单引号并弹窗:'; alert('xss'); //
    • 或者尝试闭合 script 标签:</script><script>alert('xss')</script>
  3. 提交并验证:点击提交后,通常会触发弹窗,表示 XSS 攻击成功。

🛡️ 防御方案

针对“JS输出”这种场景,不能依赖 HTML 转义函数(如htmlspecialchars),而应该使用JavaScript 转义

错误的防御(仅用 HTML 转义):

// 这在 JS 上下文中无效$jsvar=htmlspecialchars($_GET['message'],ENT_QUOTES);

正确的防御(JS 转义):
在将用户输入插入到 JavaScript 代码中时,必须对特殊字符进行反斜杠转义。

  • PHP 中的解决方案:使用addslashes()或针对 JSON 格式的json_encode

    // 方案1: 使用 addslashes$jsvar=addslashes($_GET['message']);// 方案2: 如果输出到 JS 变量中作为字符串,推荐使用 json_encode$safe_jsvar=json_encode($_GET['message']);echo"<script>var data =$safe_jsvar;</script>";
  • 通用原则:永远在正确的上下文中进行转义。在 HTML 正文用 HTML 转义,在 JS 代码块中用 JS 转义,在 URL 中用 URL 编码。

http://www.jsqmd.com/news/436988/

相关文章:

  • HGVE-2023-E006(CVE-2023-5870)
  • vue基于springboot的美食分享推荐管理系统的设计与实现 _io551-vue
  • list
  • 华为AI“做到全球前二” 没那么容易?
  • of vs for
  • 易语言开发从入门到精通:进阶篇·Windows应用程序数据安全与权限管理深度实战·密码加密/解密·数据签名/验签·文件加密/解密·数据库加密·进程/线程安全·网络传输加密·防破解/反调试·企业内部管理
  • DataFocus智能问数深度评测:为什么它是值得推荐的智能问数十大品牌之一?
  • Comate 4.0新年全面焕新!底层重构、七大升级、复杂任务驾驭力跃升
  • 荣耀卖了2600亿,华为是不是 “血亏”?
  • 鸿蒙应用开发:网络与通信
  • 备份usrtoken
  • 6个月免费学习路线图:从Python小白到AI智能体开发高手(收藏版)
  • Spring Boot中文件下载与JSON响应冲突的深度解析
  • 豆包AI商业实战手册深度解读:33个真实副业变现场景与完整闭环指南
  • IX8024@ACP#产品规格参数详解,应用场景分享
  • 含风光柴储微网多目标优化调度:MATLAB代码实现与探索
  • Go 缓存架构设计终极指南
  • 选对雷达模块,省一半开发时间!飞睿智能5.8G/24G选型指南
  • 2026开学第一周记 - -dEnIed
  • 【计算机毕业设计案例】基于django+Spark的南昌房价数据分析系统的设计与实现(程序+文档+讲解+定制)
  • 奋飞捷报卢老师专业赋能,电子元器件企业斩获 Ecovadis 铜牌认证! - 奋飞咨询ecovadis
  • Go 语言 switch 多分支语句实战指南
  • CentOS-Stream-10 搭建DHCP服务器(一)
  • Wasm 软解 H.265 方案与原理
  • 【节点】[Camera节点]原理解析与实际应用
  • 字节跳动Hydra-Nav技术详解(非常详细),机器人导航从入门到精通,收藏这一篇就够了!
  • 前端开发中的 Bundle 概念详解
  • E语言字节集二进制数据处理全指南
  • 如何通过数字员工与熊猫智汇实现呼叫中心的高效运作?
  • 快讯|灵心巧手技术路线解析:42个自由度灵巧手占据全球80%份额,成本降至国际同类1/20