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

ctfshow

1,web21

Basic认证采用Base64加密方式,Base64解码字符串发现是 用户名:密码 的格式进行Base64编码。

密码shark63

2,web22

用 子域名扫描器 扫出flag.ctf.show拿到flag,但这个域名已经没了所以就直接交的官方提供的flag。

3,web23

这段PHP代码是一个简单的Web挑战,通常用于CTF(Capture The Flag)竞赛中,旨在测试参与者对Web安全、PHP代码审计和哈希函数的理解。下面是对这段代码的逐行解释:

  1. 注释部分:这部分提供了代码的元数据,包括作者信息、修改时间和联系方式等。这对于理解代码的上下文和背景很有帮助。
  2. error_reporting(0);:这行代码关闭了PHP的错误报告。在CTF挑战中,关闭错误报告是一种常见的做法,以防止泄露不必要的信息给攻击者。
  3. include('flag.php');:这行代码包含了一个名为 flag.php 的文件,该文件很可能包含了一个名为 $flag 的变量,该变量存储了挑战的“flag”。在CTF竞赛中,flag是一个秘密字符串,参赛者需要找到它来完成挑战。
  4. if(isset($_GET['token'])){:这行代码检查是否通过GET请求传递了一个名为 token 的参数。如果是,代码将继续执行;如果不是,将高亮显示当前文件的内容。
  5. $token = md5($_GET['token']);:这行代码将GET请求中的 token 参数的值进行MD5哈希处理,并将结果存储在变量 $token 中。MD5是一种广泛使用的哈希函数,但已知存在碰撞(即不同的输入产生相同的输出),并且不再被认为是安全的加密哈希函数。
  6. 接下来的条件判断是一个复杂的逻辑表达式,用于检查 $token 的值是否满足特定的条件:
    • substr($token, 1,1)===substr($token, 14,1):检查MD5哈希值的第二个字符是否与第15个字符相同。
    • substr($token, 14,1) ===substr($token, 17,1):检查MD5哈希值的第15个字符是否与第18个字符相同。
    • (intval(substr($token, 1,1))+intval(substr($token, 14,1))+substr($token, 17,1))/substr($token, 1,1)===intval(substr($token, 31,1)):这个条件稍微复杂一些。它首先将MD5哈希值的第二个字符和第15个字符转换为整数,加上第18个字符(这里未转换为整数),然后将这个和除以第二个字符(作为除数),最后检查这个结果是否等于MD5哈希值的第32个字符(转换为整数)。
  1. 如果 $token 满足上述所有条件,那么将输出 $flag 变量的值。
  2. }else{:如果GET请求中没有 token 参数,则执行 highlight_file(__FILE__);,这将高亮显示当前PHP文件的内容。

关键点

  • 这个挑战的核心在于找到一个特定的输入( token),其MD5哈希值满足上述复杂的条件。
  • 由于MD5的碰撞性,理论上可以通过暴力搜索或字典攻击找到满足条件的哈希值,但这种方法可能非常耗时。
  • 另一种方法可能是利用MD5哈希值的某些已知特性或弱点来找到满足条件的输入。

这种类型的挑战强调了理解哈希函数、字符串操作和PHP编程的重要性。

import hashlib
import stringall = string.digits + string.ascii_letters
better_set = set(string.ascii_letters)for a in all:for b in all:c = a + bt = hashlib.md5(c.encode(encoding='utf-8')).hexdigest()if t[1] == t[14] and t[14] == t[17]:t_set = {t[1],t[14],t[17],t[31]}if t_set.isdisjoint(better_set) and t[31] != '0':if (int(t[1])+int(t[14])+int(t[17]))/int(t[1]) == int(t[31]):print(c)print(t)

这段Python代码是一个暴力破解尝试,旨在找到一个字符串 c,该字符串由两个字符组成(来自 string.digits + string.ascii_letters,即数字和小写及大写英文字母),其MD5哈希值满足特定的条件。这些条件与先前解释的PHP代码中的条件相同。下面是代码的逐行解释:

  1. import hashlib:导入Python的 hashlib 模块,该模块提供了常见的哈希算法,包括MD5。
  2. import string:导入Python的 string 模块,该模块包含一系列字符串常量,如数字、字母等。
  3. all = string.digits + string.ascii_letters:创建一个字符串 all,包含所有数字( string.digits)和小写及大写英文字母( string.ascii_letters)。
  4. better_set = set(string.ascii_letters):创建一个集合 better_set,包含所有小写和大写英文字母。这个集合将用于后续检查MD5哈希值的特定字符是否不在字母范围内。
  5. 接下来的两个嵌套的for循环遍历 all 字符串中的每个字符对 (a, b),生成一个两字符长的字符串 c。
  6. t = hashlib.md5(c.encode(encoding='utf-8')).hexdigest():将字符串 c 编码为UTF-8字节串,计算其MD5哈希值,并将哈希值转换为十六进制字符串表示。
  7. if t[1] == t[14] and t[14] == t[17]::检查MD5哈希值的第二个字符(索引1,因为索引从0开始)是否与第15个字符和第18个字符相同。
  8. t_set = {t[1],t[14],t[17],t[31]}:创建一个集合 t_set,包含MD5哈希值的第2、15、18和32个字符。
  9. if t_set.isdisjoint(better_set) and t[31] != '0'::检查 t_set 中的字符是否与 better_set(包含所有字母)没有交集,并且MD5哈希值的第32个字符不是'0'。 isdisjoint 方法如果两个集合没有共同元素则返回True。
  10. if (int(t[1])+int(t[14])+int(t[17]))/int(t[1]) == int(t[31])::将MD5哈希值的第2、15和18个字符转换为整数,求和,然后除以第2个字符(转换为整数),检查这个结果是否等于第32个字符(转换为整数)。
  11. 如果所有条件都满足,则打印出原始字符串 c 和它的MD5哈希值 t。

注意

  • 这段代码是一个暴力破解的示例,它尝试所有可能的两个字符组合来找到满足条件的字符串。由于 all 字符串包含62个字符(10个数字+26个小写字母+26个大写字母),因此总共有3,844种可能的组合。对于每个组合,都需要计算MD5哈希值并进行一系列检查。
  • 尽管这段代码在理论上可以工作,但由于MD5哈希的碰撞性和计算量,它可能非常慢,特别是当输入空间更大时。在实际应用中,寻找满足特定哈希条件的输入通常是一个具有挑战性的问题,可能需要更高级的技术或优化方法。

4.web24

发现会通过 mt_srand() 生成伪随机数,php伪随机数漏洞

mt_srand() //播种 Mersenne Twister 随机数生成器。 mt_rand() //生成随机数

简单来说mt_srand()通过分发seed种子,然后种子有了后,靠mt_rand()生成随机数

5,web27

点击录取名单里面有,部分信息,然后进行查询

进行爆破

621022199002015237

6,web28

爆破目录/0-100/0-100/

7,web29

error_reporting(0);这行代码关闭了PHP的错误报告功能。这意味着如果代码执行过程中发生错误,用户不会看到任何错误信息。

if(isset($_GET['c'])){这行代码检查URL的查询字符串中是否存在名为 c 的参数。

if(!preg_match("/flag/i", $c)){这行代码使用 preg_match 函数检查变量 $c 的内容是否包含字符串"flag"(不区分大小写,由 /i 修饰符指定)。如果 $c 不包含"flag",条件为真。

如果上面的条件为真(即 $c 不包含"flag"),则执行 eval($c);。 eval 是一个PHP函数,它会将传递给它的字符串当作PHP代码执行。这是非常危险的,因为它允许执行任意代码,只要攻击者能够控制 $c 的值。

highlight_file(__FILE__);这行代码将当前文件的源代码以高亮形式输出。 __FILE__ 是一个魔术常量,它返回当前文件的完整路径和文件名。这通常用于调试目的,但在生产环境中暴露源代码可能是一个安全风险。

8,web30

和上面的非常像不过过滤了flag,system,php,知到了过滤就换函数

system:执行系统命令,有回显

passthru():执行系统命令并且显示原始输出

cat被过滤了,换成tac

9,web31

使用""双引号ls

空格被过滤了

审计源码发现system被过滤可以用 passthru 函数绕过,cat被过滤可以用 more、less、nl 绕过

空格被过滤可以用 ${IFS}、 %09 绕过

10,web32

php伪协议:

在实战中php伪协议配合文件包含漏洞可以发挥重大作用,比如读取文件源码,任意命令执行,或者开启后门获取webshell。常见的伪协议有

  • php://filter 读取文件源码
  • php://input 任意代码执行
  • data://text/plain 任意代码执行
  • zip:// 配合文件上传开启后门

php://filter:

php://filter 协议可以对打开的数据流进行筛选和过滤,常用于读取文件源码。

使用文件包含函数包含文件时,文件中的代码会被执行,如果想要读取文件源码,可以使用base64对文件内容进行编码,编码后的文件内容不会被执行,而是展示在页面中,我们将页面中的内容使用base64解码,就可以获取文件的源码了。

php://input:

可以访问请求的原始数据,配合文件包含漏洞可以将post请求体中的内容当做文件内容执行,从而实现任意代码执行,需要注意的是,当enctype=multipart/form-data时,php:/input将会无效。

data://text/plain:

写法:data://text/plain, 或 data://text/plain;base64,

协议格式: data:资源类型;编码,内容

data://协议通过执行资源类型,使后面的内容当做文件内容来执行,从而造成任意代码执行.

include (或 require)语句会获取指定文件中存在的所有文本/代码/标记,并复制到使用 include 语句的文件中。 伪协议中的 data://,可以让用户来控制输入流,当它与包含函数结合时,用户输入的data://流会被当作php文件执行

zip://:

ziip://协议用来读取压缩包中的文件,可以配合文件上传开启后门,获取webshell

将shell.txt压缩成zip,再将后缀名改为jpg上传至服务器,再通过zip伪协议访问压缩包里的文件,从而链接木马

过滤了;分号

这⾥可以使⽤php短标签来闭合执⾏命令。这⾥可以⽤? c=include$_GET[a]?>

include 语句通常用于包含并执行一个文件的内容。 然后因为include不能直接包含出flag,所以使⽤php伪协议来读取flag的base64内容

php://filter 是一个元封装器,它允许你读取原始数据流,并对其进行过滤处理。在这个例子中,攻击者试图使用 convert.base64-encode 过滤器来读取 flag.php 文件的内容,并将其编码为Base64。

php://filter

php://filter 是一个元封装器,它允许你对一个打开的文件流应用一系列的过滤器。这些过滤器可以在读取文件内容之前或写入文件内容之后对数据进行转换。 php://filter 通常用于读取或写入文件时对数据进行预处理。

read=convert.base64-encode

这部分指定了要应用的过滤器。在这个例子中, read=convert.base64-encode 表示在读取文件内容之前,将其转换为Base64编码。 convert.base64-encode 是PHP内置的一个过滤器,用于将数据编码为Base64格式。

resource=flag.php

resource= 后面跟的是要读取或写入的文件的路径。在这个例子中, flag.php 是目标文件的名称。这意味着 php://filter 将尝试打开 flag.php 文件,应用Base64编码过滤器,然后返回编码后的内容。

11,web33

还是用上面的包含

?c=include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php

12,web34

还是和上面的一样,通过php://filter/读取flag.php

13,web35

对上面的没有影响

也可以用

  • data: 是数据URI的协议标识,告诉浏览器接下来的内容是一个数据URI。
  • text/plain 是MIME类型,指明了嵌入内容的媒体类型。在这个例子中,它表明内容是纯文本。MIME类型用于告诉浏览器或其他客户端如何解释数据。

data://协议通过执行资源类型,使后面的内容当做文件内容来执行,从而造成任意代码执行.

14,web36

还是没影响,只是多过滤了数字

15,web37

想⽐于之前,这⼀次给的就不是eval直接来执⾏命令,⽽是使⽤的include来进⾏命令执⾏。

include 语句通常用于包含并执行一个文件的内容。 然后因为include会包含输入的语句,并执行,导致前面的php://filter/read=convert.base64-encode/resource=fla g.php,这个语句就不可以用了

16,web38

这⾥把php给过滤了,所以我们换个php的短标签,可以把php换成等号

<?php echo 1; ?> 正常写法<? echo 1; ?> 短标签写法,5.4 起 <?= 'hello'; === <? echo 'hello';<?= phpinfo();?><% echo 1; %> asp 风格写法<script language="php"> echo 1; </script> 长标签写法<?php echo 1; ?> 正常写法<? echo 1; ?> 短标签写法,5.4 起 <?= 'hello'; === <? echo 'hello';<?= phpinfo();?><% echo 1; %> asp 风格写法<script language="php"> echo 1; </script> 长标签写法
第 1 种是正常写法,没什么可说的。第 2 种,需要 php.ini 配置文件中的指令 short_open_tag 打开后才可用,或者在 PHP 编译时加入了 --enable-short-tags 选项。自 PHP5.4 起,短格式的 echo 标记 <?= 总会被识别并且合法,而不管 short_open_tag 的设置是什么。第 3 种,不需要修改参数开关,但是只能在7.0以下可用。第 4 种,不推荐写法,为了 asp 程序员学习 php 所添加的语法糖写法。需要通过 php.ini 配置文件中的指令 asp_tags 打开后才可用。第 5 种,在 php7.0 后已经不解析了。

17,web39

这⾥是把$c."php"拼接了起来,但是还是可以⽤命令执⾏,因为在短标签⾥⾯进⾏了⼀个 已经闭合了所以不会受到php的影响

18,web40

getallheaders():返回所有的HTTP头信息,返回的是数组⽽eval要求为字符串,所以要⽤impl ode()函数将数组转换为字符串 get_defined_vars():该函数的作⽤是获取所有的已定义变量,返回值也是数组,不过是⼆维数 组,⽤var_dump()输出可以看⻅输出的内容,看⻅在第⼏位之后,可以⽤current()函数来获取其 值,详细可以看官⽅函数。payload:var_dump(current(get_defined_vars())); session_id():session_id()可以⽤来获取/设置当前会话 ID,可以⽤这个函数来获取cookie 中的phpsessionid,并且这个值我们是可控的。 如可以在cookie中设置 PHPSESSID=706870696e666f28293b,然后⽤hex2bin()函数, 即传⼊?exp=eval(hex2bin(session_id(session_start()))); 并设置cookie:PHP

SESSID=706870696e666f28293b session_start 函数是为了开启session 配合使⽤的函数: print_r(scandir(‘.’)); 查看当前⽬录下的所有⽂件名 var_dump() localeconv() 函数返回⼀包含本地数字及货币格式信息的数组。 current() 函数返回数组中的当前元素(单元),默认取第⼀个值,pos是current的别名 each() 返回数组中当前的键/值对并将数组指针向前移动⼀步 end() 将数组的内部指针指向最后⼀个单元 next() 将数组中的内部指针向前移动⼀位 prev() 将数组中的内部指针倒回⼀位 array_reverse() 以相反的元素顺序返回数组

因为过滤了特殊符号所以上⾯print_r(scandir(‘.’));不 能直接⽤ 要配合localeconv()和current()来使⽤

19,web151

从这里可以看到提示说明是前端校验

20,web152

21,web153

大小写绕过失败

使用.user.ini 来构造后⻔

php.ini是php的⼀个全局配置⽂件,对整个web服务起作⽤;⽽.user.ini和.htaccess⼀样是⽬录的配置⽂件,.user.ini就是⽤户⾃定义的⼀个php.ini,我们可以利⽤这个⽂件来构造后⻔和隐藏后⻔。.htaccess是Apache的,.user.ini是Nginx的

php 配置项中有两个配置可以起到一些作用

auto_prepend_file = <filename>         //包含在文件头
auto_append_file = <filename>          //包含在文件尾

这两个配置项的作用相当于一个文件包含,比如

// .user.ini
auto_prepend_file = 1.jpg
// 1.jpg
<?php phpinfo();?>
// 1.php(任意php文件)

利用.user.ini的前提是服务器开启了CGI或者FastCGI,并且上传文件的存储路径下有index.php可执行文件。

另一条配置包含在文件尾,如果遇到了 exit 语句的话就会失效。

.user.ini使用范围很广,不仅限于 Apache 服务器,同样适用于 Nginx 服务器,只要服务器启用了 fastcgi 模式 (通常非线程安全模式使用的就是 fastcgi 模式)。 局限

在.user.ini中使用这条配置也说了是在同目录下的其他.php 文件中包含配置中所指定的文件,也就是说需要该目录下存在.php 文件,通常在文件上传中,一般是专门有一个目录用来存在图片,可能小概率会存在.php 文件。

先上传木马图片,再上传ini文件

先改成png,绕过前端

相关文章:

ctfshow

1,web21 Basic认证采用Base64加密方式&#xff0c;Base64解码字符串发现是 用户名:密码 的格式进行Base64编码。 密码shark63 2,web22 用 子域名扫描器 扫出flag.ctf.show拿到flag&#xff0c;但这个域名已经没了所以就直接交的官方提供的flag。 3,web23 这段PHP代码是一个简单…...

【分享一个vue指令】鼠标放置提示指令v-tooltip

描述 自定义指令 v-tooltip mounted(el, binding)&#xff1a;当元素被挂载到DOM上时&#xff0c;这个钩子会被调用。 el 是指令绑定的元素&#xff0c;binding 包含了指令的值&#xff0c;即 binding.value&#xff0c;这里是 clickOutside 字符串。tooltip 变量用于存储创建…...

掌握 Spring 事务管理:深入理解 @Transactional 注解

在业务方法上使用Transactional开启声明式事务时&#xff0c;很有可能由于使用方式有误&#xff0c;导致事务没有生效。 环境准备 表结构 CREATE TABLE admin (id bigint(20) unsigned NOT NULL AUTO_INCREMENT,username varchar(255) DEFAULT NULL,password varchar(255) …...

字符三角形

字符三角形 C语言代码C语言代码Java语言代码Python语言代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 给定一个字符&#xff0c;用它构造一个底边长5个字符&#xff0c;高3个字符的等腰字符三角形。 输入 输入只有一行&#xff0c; …...

【LLM】一文学会SPPO

博客昵称&#xff1a;沈小农学编程 作者简介&#xff1a;一名在读硕士&#xff0c;定期更新相关算法面试题&#xff0c;欢迎关注小弟&#xff01; PS&#xff1a;哈喽&#xff01;各位CSDN的uu们&#xff0c;我是你的小弟沈小农&#xff0c;希望我的文章能帮助到你。欢迎大家在…...

如何通过ChatGPT提高自己的编程水平

在编程学习的过程中&#xff0c;开发者往往会遇到各种各样的技术难题和学习瓶颈。传统的学习方法依赖书籍、教程、视频等&#xff0c;但随着技术的不断发展&#xff0c;AI助手的崛起为编程学习带来了全新的机遇。ChatGPT&#xff0c;作为一种强大的自然语言处理工具&#xff0c…...

NVR管理平台EasyNVR多品牌NVR管理工具的流媒体视频融合与汇聚管理方案

随着信息技术的飞速发展&#xff0c;视频监控已经成为现代社会安全管理和业务运营不可或缺的一部分。无论是智慧城市、智能交通、还是大型企业、校园安防&#xff0c;视频监控系统的应用都日益广泛。NVR管理平台EasyNVR&#xff0c;作为功能强大的流媒体服务器软件&#xff0c;…...

python之使用django框架开发web项目

本问将对django框架在python的web项目中的使用进行介绍,有不对之处,烦请指正。 首先使用创建一个django工程(本示例中使用pycharm2024+python3.12),名称和项目保存路径根据自己的需要自行修改,新手直接默认本机环境就好(关于conda将会另开一篇进行讲解。),最后点击cre…...

ChatGPT 桌面版发布了,如何安装?

本章教程教大家如何进行安装。 一、下载安装包 官网地址地址&#xff1a;https://openai.com/chatgpt/desktop/ 支持Windows和MacOS操作系统 二、安装步骤 Windows用户下载之后&#xff0c;会有一个exe安装包&#xff0c;点击运行安装即可。 注意事项&#xff0c;如果Windows操…...

ubuntu 配置 多个 git 客户端 账户

Git配置两个或多个账户 https://blog.csdn.net/mainking2003/article/details/134711865 git 提交 不用输入用户名、密码的方法&#xff08;GIT免密提交&#xff09; https://blog.csdn.net/wowocpp/article/details/125797263 git config 用法 https://blog.csdn.net/blueb…...

React Native的界面与交互

React Native (RN) 是一个由 Facebook 开发的开源框架&#xff0c;用于构建跨平台的移动应用程序。它允许开发者使用 JavaScript 和 React 来创建原生 iOS 和 Android 应用。RN 的出现极大地简化了移动应用的开发过程&#xff0c;使得开发者可以更快速、更高效地构建高质量的应…...

autogen+ollama+litellm实现本地部署多代理智能体

autogen 是一个专门为大语言模型 (LLMs) 驱动的自治代理 (autonomous agents) 设计的 Python 库,由 Microsoft 开发和维护。它通过高度模块化和可扩展的架构,支持用户快速构建和运行多代理系统,这些代理可以在没有明确人类干预的情况下协作完成复杂任务。AutoGen 支持以最少…...

InstantStyle容器构建指南

一、介绍 InstantStyle 是一个由小红书的 InstantX 团队开发并推出的图像风格迁移框架&#xff0c;它专注于解决图像生成中的风格化问题&#xff0c;旨在生成与参考图像风格一致的图像。以下是关于 InstantStyle 的详细介绍&#xff1a; 1.技术特点 风格与内容的有效分离 &a…...

百度主动推送可以提升抓取,它能提升索引量吗?

站长在建站SEO的时候&#xff0c;需要用到百度站长平台&#xff08;资源平台&#xff09;的工具&#xff0c;在站长工具中【普通收录】-【资源提交】-【API提交】这个功能&#xff0c;对网站的抓取进行一个提交。 这里估计很多站长就有疑问&#xff0c;如果我主动推送&#xf…...

A045-基于spring boot的个人博客系统的设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600…...

JavaEE 【知识改变命运】02 多线程(1)

文章目录 线程是什么&#xff1f;1.1概念1.1.1 线程是什么&#xff1f;1.1.2 为什么要有线程1.1.3 进程和线程的区别1.1.4 思考&#xff1a;执行一个任务&#xff0c;是不是创建的线程或者越多是不是越好&#xff1f;&#xff08;比如吃包子比赛&#xff09;1.1.5 ) Java 的线程…...

Pytorch使用手册-Transforms(专题四)

Transforms(变换) 在 PyTorch 数据处理中的重要性和使用方法,特别是如何通过 torchvision.transforms 模块对数据进行预处理和变换,使其适合用于训练机器学习模型。以下是具体的内容解读: 什么是 Transforms? 数据通常在收集后并非直接适合用于训练机器学习模型,需要通…...

【Android】ARouter的使用及源码解析

文章目录 简介介绍作用 原理关系 使用添加依赖和配置初始化SDK添加注解在目标界面跳转界面不带参跳转界面含参处理返回结果 源码基本流程getInstance()build()navigation()_navigation()Warehouse ARouter初始化init帮助类根帮助类组帮助类 completion 总结 简介 介绍 ARouter…...

ValueError: bbox_params must be specified for bbox transformations

错误 ValueError: bbox_params must be specified for bbox transformations 是因为使用了需要处理边界框&#xff08;bboxes&#xff09;的增强操作&#xff0c;但在 albumentations.Compose 中没有正确设置bbox_params 参数。 bbox_params 是用来指定如何处理边界框的配置。…...

挂壁式空气净化器哪个品牌的质量好?排名top3优秀产品测评分析

随着挂壁式空气净化器市场的不断扩大&#xff0c;各类品牌与型号琳琅满目。但遗憾的是&#xff0c;一些跨界网红品牌过于追求短期效益&#xff0c;导致产品在净化效果与去除异味方面表现平平&#xff0c;使用体验不佳&#xff0c;甚至可能带来二次污染风险&#xff0c;影响人体…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...