CTFSHOW-WEB入门-PHP特性89-100
- 题目:web 89
- 题目:

- 解题思路:这道题目涉及了两个函数:preg_match()和intval()简要介绍一下两个函数
- preg_match()用于对字符串进行正则表达式的匹配,但是在传入字符串的时候确实会抛出一个 Warning 错误,但它不会导致整个 PHP 脚本终止。可以利用这个绕过第一个if语句
- intval()用于将字符串转化为整数,特殊情况:传入数组的话会判断里面有没有元素,有则返回1,没有返回0,可以利用这个绕过第二个if语句
- 于是payload为?num[]=a
- 知识点:preg_match() intval()传入数组特性
- 题目:
- 题目:web 90
- 题目:

- 解题思路:简要分析代码,get一个num参数,如果这个变量不是‘4476’,并且在经过intval()函数处理之后,结果等于4476就输出flag
- 这里的intval()函数,在处理字符串时,如果字符串以数字开头,则会先转化为数字,后面如果有其他非数字内容则会忽略,即:将第一个非数字(加减号除外)前的内容转换为数字: 例如:intval(‘dsa1’)=0 intval(‘12dfjkhjkdf111’)=12 因此payload为?num=4476djfj
- 可以使用不同的数字类型的数据,如浮点数 num=4476.0
- 另解:由于intval()函数可以有多个参数 intval( v a r , var, var,base) 这里的base表示进制,
- base可取:0 —八进制 0x —十六进制 0b --二进制 不填默认十进制
- 因此 num=010574或num=0x117c 也可以得到flag
- 前面添加+号,intval(‘+4476’) 会转换为4476
- 知识点:intval() 转换特性
- 题目:
- 题目:web 91
- 题目:

- 解题思路:代码的解释:get一个cmd参数,要通过第一个正则表达式成功,第二个失败,才会输出flag:分析一下两个表达式:
- 首先看看区别,第二个比第一个少了个m修饰,表示多行模式匹配,第二个单行匹配, 中间//之间的是要匹配的内容, ^表示匹配字符串开始, $表示字符串结尾, i表示不区分大小写,也就是php Php PHP这样的都可以匹配, 由于第一个有m,那就说明是匹配的是每一行的开头和结尾,有一行满足即可而不是字符串的开头和结尾 所以ccc%0aphp也可以得到flag
- 因此可以让他通过第一个,通过包含换行符,这里首先尝试了 PHP\nphp发现不行
于是再利用换行符的url编码试试: PHP%0aphp:成功
- 知识点:preg_match()多行匹配
- 题目:
- 题目:web 92
- 题目:

- 解题思路:之前解释过intval(还有第二个参数base表示进制),这里0表示八进制,于是进行转换:
num=010574得到flag:
看了别人的解法了解到还可以利用intval()函数对于科学计数法的处理机制题:由于这里$num==4476这里的比较: - 这里进行的是字符串与整数的比较:
- 在PHP中,字符串与整数比较时,字符串会尝试被转换为整数
- 如果 $num 字符串以数字开头,它会被转换为那个数字;否则,转换为0
- 因此,如果 $num 是 “4476”(或任何以4476开头的字符串),这个条件为假
- 但如果 $num 是像 “4476abc” 这样的值,它仍然会被视为不等于4476(因为转换停止在第一个非数字字符)
- intval(4476e2)的处理,这样会当作科学记数法处理,但是如果后面添加了进制,那么就会出现:
因此可以利用这一点 构造 num=4476e2 也可以得到结果
- 这里进行的是字符串与整数的比较:
- 知识点:intval()函数特性
- 题目:
- 题目:web 93
- 题目:

- 解题思路:寓上一题类似,多加限制,不能输入字母,也就是不能使用二进制0b和十六进制0x但对之前的payload无影响:num=010574

- 知识点:intval()特性
- 题目:
- 题目:web 94
- 题目:

- 解题思路:分析题目 可以知道:这里判断num是否值和类型和4476相同,然后判断是否含有字母,并且判断0的位置,如果不含0或者0在开头第一个位置,均不可,最后再判断intval处理后是否等于4476,因此构造payload:num中要 有0,但是不能再第一位,于是可以 加个+ :num=+10574:
也可利用浮点数绕过 num=4476.0:
另解:通过空白符(换行符、制表符、空格等)也可以绕过第一个字符不为0,但是又包含0的限制
- 知识点:strpos()函数
- 题目:
int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
参数说明
$haystack: 要搜索的字符串(母字符串)。
$needle: 需要查找的字符或字符串(子字符串)。
$offset: 可选参数。指定开始搜索的位置。如果为负数,则从字符串末尾开始。
返回值
返回 needle 在 haystack 中首次出现的位置(从 0 开始计数)。
如果未找到 needle,则返回 false。
- 题目:web 95
- 题目:

- 解题思路:比上一个题目多了一个点号的过滤,就不能使用小数绕过,可以使用空白符或者+号进行绕过:使用空格:
使用+号:
- 题目:
- 题目:web 96
- 题目:

- 解题思路:看起来flag在flag.php 内,现在就是要想办法查看flag.php 的内容,而这里直接是完全过滤了flag.php,由于是当前目录,可以使用./flag.php来代替表达

- 知识点:linux下当前目录的表示
- 题目:
- 题目:web 97
- 题目:

- 解题思路:分析代码,这里是一个MD5的强类型比较,可以使用fastcoll工具来获得符合要求的字符串:
这里通过抓包上传,hackbar会出现问题:
得到结果 - 知识点:强类型比较绕过
- 题目:
- 题目:web 98
- 题目:

- 解题思路:看到题目代码,还是有点小懵逼,后来认真看了一会,发现他是这样一个逻辑:包含文件flag.php,后面是一连串的四个三木运算符,XXX?语句1:语句2 意思是XXX条件如果成立,返回语句1的结果,否则返回语句2的结果。那么第一句的意思就是:判断全局变量 G E T 对应的数组是否为空,不为空的话,将 _GET 对应的数组是否为空,不为空的话,将 GET对应的数组是否为空,不为空的话,将_POST全局变量对应的数组的地址赋给 G E T , 也就是让两个数组指向同一个地址,如果为空的话,就返回 f l a g 这个字符串,但是不进行赋值操作,后两句同样的道理,只不过是判断有没有 g e t 到一个名 f l a g 的变量,并且值为 f l a g ,由于我们最终目标是获取 _GET,也就是让两个数组指向同一个地址,如果为空的话,就返回flag这个字符串,但是不进行赋值操作,后两句同样的道理,只不过是判断有没有get到一个名flag的变量,并且值为flag,由于我们最终目标是获取 GET,也就是让两个数组指向同一个地址,如果为空的话,就返回flag这个字符串,但是不进行赋值操作,后两句同样的道理,只不过是判断有没有get到一个名flag的变量,并且值为flag,由于我们最终目标是获取flag,于是,我们就得让 G E T 的全局数组里面有 H T T P F L A G 这个参数,并且等于 f l a g ,于是我们 g e t 一个 H T T P F L A G = f l a g ,既然 _GET的全局数组里面有HTTP_FLAG这个参数,并且等于flag,于是我们get一个HTTP_FLAG=flag,既然 GET的全局数组里面有HTTPFLAG这个参数,并且等于flag,于是我们get一个HTTPFLAG=flag,既然_GET数组不为空,那么就会执行KaTeX parse error: Expected 'EOF', got '&' at position 6: _GET=&̲_POST这个语句,也就是让两者执行同一块地址,于是我们也要post一个HTTP_FLAG,值为flag,得到结果:

- 知识点:超级全局数组
- 题目:
1. $_GET
定义: 用于收集通过 URL 查询字符串传递的数据。通常在HTTP GET请求中使用。
使用场景: 当你在表单中指定了 method="get",或者在 URL 中直接传递查询参数时。
示例:
// URL: http://example.com/page.php?name=John&age=25
echo $_GET['name']; // 输出: John
echo $_GET['age']; // 输出: 25
2. $_POST
定义: 用于收集通过 HTTP POST 方法发送的数据。一般在表单提交时使用。
使用场景: 当表单的数据通过 method="post" 发送时。
示例:
// 表单数据提交
// <form method="post"><input type="text" name="username"></form>
echo $_POST['username']; // 输出用户提交的用户名
3. $_REQUEST
定义: 包含 $_GET、$_POST 和 $_COOKIE 的内容,提供了一种访问不同请求类型数据的简便方法。
使用场景: 当不确定数据来自哪里时,可以使用 $_REQUEST。
示例:
echo $_REQUEST['name']; // 如果存在同名字段,从 GET, POST 和 COOKIE 中返回
4. $_COOKIE
定义: 用于访问 HTTP cookies 的数据。
使用场景: 当服务器或者客户端设置 cookies 时。
示例:
// 假设设置了 cookie: setcookie("user", "John");
echo $_COOKIE['user']; // 输出: John
5. $_SESSION
定义: 存储用户会话数据。必须在使用前开启会话(使用 session_start())。
使用场景: 当用户需要在多个页面之间保持状态时(如登录状态)。
示例:
session_start();
$_SESSION['username'] = 'John';
echo $_SESSION['username']; // 输出: John
6. $_SERVER
定义: 包含关于服务器环境的信息和客户端请求的信息。
使用场景: 用于获取服务器信息(如请求头、脚本路径、访问的URL等)。
示例:
echo $_SERVER['HTTP_USER_AGENT']; // 输出: 客户端的用户代理字符串
echo $_SERVER['REQUEST_METHOD']; // 输出: GET 或 POST
7. $_FILES
定义: 用于通过 HTTP POST 方法上传的文件信息。
使用场景: 当表单中包含文件上传字段时。
示例:
// <input type="file" name="uploaded_file">
if ($_FILES['uploaded_file']['error'] == UPLOAD_ERR_OK) {echo $_FILES['uploaded_file']['name']; // 输出上传文件的名称
}
- 题目:web 99
- 题目:

- 解题思路:先分析代码,首先通过allow获取一个空数组,后来将其产生的随机数添加到数组中去,这段代码包含一个
<font style="color:rgb(251, 71, 135);">for</font>循环,从<font style="color:rgb(251, 71, 135);">36</font>开始到<font style="color:rgb(251, 71, 135);">0x36d</font>(即 877 的十六进制表示)。在每次循环中,使用<font style="color:rgb(251, 71, 135);">rand(1, $i)</font>生成一个在<font style="color:rgb(251, 71, 135);">1</font>和<font style="color:rgb(251, 71, 135);">$i</font>之间的随机整数,并将其推入<font style="color:rgb(251, 71, 135);">$allow</font>数组中。这个过程将填充<font style="color:rgb(251, 71, 135);">$allow</font>数组,以包含多个随机数。具体会填充多少个随机数取决于循环的执行次数(即<font style="color:rgb(251, 71, 135);">0x36d - 36 = 841</font>次)。 - 然后,检查 GET 请求中是否存在名为
<font style="color:rgb(251, 71, 135);">n</font>的参数,并且该参数的值是否在<font style="color:rgb(251, 71, 135);">$allow</font>数组中。<font style="color:rgb(251, 71, 135);">isset($_GET['n'])</font>确定<font style="color:rgb(251, 71, 135);">'n'</font>参数是否存在,<font style="color:rgb(251, 71, 135);">in_array($_GET['n'], $allow)</font>确定这个参数的值是否在之前填充的<font style="color:rgb(251, 71, 135);">$allow</font>数组中。如果这两个条件成立:<font style="color:rgb(251, 71, 135);">file_put_contents($_GET['n'], $_POST['content']);</font>将<font style="color:rgb(251, 71, 135);">$_POST['content']</font>的内容写入一个由<font style="color:rgb(251, 71, 135);">n</font>参数指定的文件。这里in_array()函数有一个漏洞,如果不设置第三个参数,那么,这里进行的就是弱类型比较,eg:<font style="color:rgba(0, 0, 0, 0.88);">1.php==1</font>显示为true,那么这里就可以讲一段PHP代码写入文件,文件名选择可以满足条件的1-877均可,这里选择出现频率高的,比如1,2这样的,这里选择2:并且写入php木马,访问让其执行
发现flag的位置
进行访问:得到flag
- 知识点:in_array()函数特性,不设置第三个参数时进行弱类型比较
- 题目:
- 题目:web 100
1. 题目:
2. 解题思路:我们知道,flag的信息在类ctfshow里面,于是,就想办法查看这个类的信息,刚好,有一个这个类的对象可以利用。这里主要是考查了_<font style="color:rgba(0, 0, 0, 0.88);background-color:rgb(240, 231, 255);">v</font>_<font style="color:rgba(0, 0, 0, 0.88);background-color:rgb(240, 231, 255);">0=</font>_<font style="color:rgba(0, 0, 0, 0.88);background-color:rgb(240, 231, 255);">isnumeric</font>_<font style="color:rgba(0, 0, 0, 0.88);background-color:rgb(240, 231, 255);">(</font><font style="color:rgba(0, 0, 0, 0.88);background-color:rgb(240, 231, 255);">v1) and is_numeric(</font><font style="color:rgba(0, 0, 0, 0.88);background-color:rgb(240, 231, 255);">v2)andisnumeric(</font>_<font style="color:rgba(0, 0, 0, 0.88);background-color:rgb(240, 231, 255);">v</font>_<font style="color:rgba(0, 0, 0, 0.88);background-color:rgb(240, 231, 255);">2)</font>_<font style="color:rgba(0, 0, 0, 0.88);background-color:rgb(240, 231, 255);">andisnumeric</font>_<font style="color:rgba(0, 0, 0, 0.88);background-color:rgb(240, 231, 255);">(</font><font style="color:rgba(0, 0, 0, 0.88);background-color:rgb(240, 231, 255);">v3);</font>这一句的执行顺序__ 首先先给v0变量赋值,相当于是v0只和v1有关,
在 PHP 中,赋值操作符 = 的优先级低于逻辑操作符 and。
这意味着在没有括号的情况下,表达式中的逻辑运算会先于赋值运算执行。
例子分析
考虑以下代码:
$v0 = true and false;
在这种情况下,表达式实际上等同于:
($v0 = true) and false;
这意味着 true 被赋值给 $v0,然后执行逻辑运算 and false,但 $v0 的值已经是 true 了。
因此,最终 $v0 的值为 true。
1. 于是只需要v1是数字,v2没有分号,v3含有分号,就可以执行eval函数,从而获取到相应信息,eval里面的参数可以通过命令拼接的方法进行执行:因此 v1=1&v2=var_dump($ctfshow)/*&v3=*/;
3. 知识点:var_dump<font style="color:rgba(0, 0, 0, 0.88);background-color:rgb(242, 247, 255);">可以得到该对象的详细信息,包括对象的类型、属性、属性的值以及属性的可见性(public、protected、private)。 </font><font style="color:rgba(0, 0, 0, 0.88);"> </font>
相关文章:
CTFSHOW-WEB入门-PHP特性89-100
题目:web 89 题目:解题思路:这道题目涉及了两个函数:preg_match()和intval()简要介绍一下两个函数 preg_match()用于对字符串进行正则表达式的匹配࿰…...
[250204] Mistral Small 3:小巧、快速、强大 | asdf 0.16.0 发布:Golang 重写带来性能飞跃
目录 Mistral AI 发布开源模型 Mistral Small 3:小巧、快速、强大asdf 0.16.0 版本发布:Golang 重写带来性能飞跃! Mistral AI 发布开源模型 Mistral Small 3:小巧、快速、强大 法国人工智能初创公司 Mistral AI 发布了最新的开源…...
PySpark学习笔记5-SparkSQL
sparkSql的数据抽象有两种。 一类是data set适用于java和Scala 一类是data frame适用于java,Scala,python 将r d d转换为data frame #方式一 df spark.createDataFrame(rdd,schema[name,age]) #方式二 schema Structtype(). add(id,integertype(),nu…...
windows版的docker如何使用宿主机的GPU
windows版的docker使用宿主机的GPU的命令 命令如下 docker run -it --nethost --gpus all --name 容器名 -e NVIDIA_DRIVER_CAPABILITIEScompute,utility -e NVIDIA_VISIBLE_DEVICESall 镜像名效果 (transformer) rootdocker-desktop:/# python Python 3.9.0 (default, Nov 15 …...
Python爬虫:1药城店铺爬虫(完整代码)
⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…...
代码随想录算法训练营打卡第55天:并查集相关问题;
Java并查集的模板 //并查集模板 class DisJoint{private int[] father;public DisJoint(int N) {father new int[N];for (int i 0; i < N; i){father[i] i;}}public int find(int n) {return n father[n] ? n : (father[n] find(father[n]));}public void join (int …...
K8S学习笔记-------1.安装部署K8S集群环境
1.修改为root权限 #sudo su 2.修改主机名 #hostnamectl set-hostname k8s-master01 3.查看网络地址 sudo nano /etc/netplan/01-netcfg.yaml4.使网络配置修改生效 sudo netplan apply5.修改UUID(某些虚拟机系统,需要设置才能生成UUID)#…...
云原生周刊:K8s引领潮流
开源项目推荐 KWOK KWOK(Kubernetes WithOut Kubelet)是一个开源项目,旨在提供一个轻量级的 K8s 集群模拟环境,允许用户在不依赖真实节点的情况下,本地模拟整个 K8s 集群。它通过模拟 Kubelet 和其他集群组件的行为&…...
C_位运算符及其在单片机寄存器的操作
C语言的位运算符用于直接操作二进制位,本篇简单结束各个位运算符的作业及其在操作寄存器的应用场景。 一、位运算符的简单说明 1、按位与运算符(&) 功能:按位与运算符对两个操作数的每一位执行与操作。如果两个对应的二进制…...
【算法篇】贪心算法
目录 贪心算法 贪心算法实际应用 一,零钱找回问题 二,活动选择问题 三,分数背包问题 将数组和减半的最小操作次数 最大数 贪心算法 贪心算法,是一种在每一步选择中都采取当前状态下的最优策略,期望得到全局最优…...
Selenium 浏览器操作与使用技巧——详细解析(Java版)
目录 一、浏览器及窗口操作 二、键盘与鼠标操作 三、勾选复选框 四、多层框架/窗口定位 五、操作下拉框 六、上传文件操作 七、处理弹窗与 alert 八、处理动态元素 九、使用 Selenium 进行网站监控 前言 Selenium 是一款非常强大的 Web 自动化测试工具,能够…...
ioDraw桌面版 v3.4.0发布!AI文生图,AI图生图,手绘风格一键转换!
流程图功能升级 AI 文生图: 用户现在能输入文字描述,让软件自动生成对应的流程图画面,减少了手动绘图的工作量,提高创作效率,比如输入 “项目开发流程”,软件可能就会生成包含需求分析、设计、开发、测试…...
深入理解Node.js_架构与最佳实践
1. 引言 1.1 什么是Node.js Node.js简介:Node.js是一个基于Chrome V8引擎的JavaScript运行时,用于构建快速、可扩展的网络应用。Node.js的历史背景和发展:Node.js最初由Ryan Dahl在2009年发布,旨在解决I/O密集型应用的性能问题。随着时间的推移,Node.js社区不断壮大,提供…...
安装和卸载RabbitMQ
我的飞书:https://rvg7rs2jk1g.feishu.cn/docx/SUWXdDb0UoCV86xP6b3c7qtMn6b 使用Ubuntu环境进行安装 一、安装Erlang 在安装RabbitMQ之前,我们需要先安装Erlang,RabbitMQ需要Erlang的语言支持 #安装Erlang sudo apt-get install erlang 在安装的过程中,会弹出一段信息,此…...
第27节课:安全审计与防御—构建坚固的网络安全防线
目录 安全审计工具与流程安全审计工具NessusNmapBurp Suite 安全审计流程规划与准备信息收集漏洞扫描分析与评估报告与建议 安全防御策略网络层防御应用层防御数据层防御安全管理 结语 在当今数字化时代,网络安全已成为企业和个人不可忽视的重要议题。随着网络攻击手…...
【蓝桥杯】日志统计
日志统计(编程题)https://dashoj.com/d/lqbproblem/p/53https://dashoj.com/d/lqbproblem/p/53https://dashoj.com/d/lqbproblem/p/53 题目 日志统计(编程题) 讲解 这个讲解感觉比较通俗易懂。 蓝桥杯2018年省赛B组08(c/c)日…...
23.Word:小王-制作公司战略规划文档❗【5】
目录 NO1.2.3.4 NO5.6 NO7.8.9 NO10.11 NO12 NO13.14 NO1.2.3.4 布局→页面设置对话框→纸张:纸张大小:宽度/高度→页边距:上下左右→版式:页眉页脚→文档网格:勾选只指定行网格✔→ 每页:…...
基于单片机的智能安全插座(论文+源码)
1 系统整体方案设计 本课题基于单片机的智能安全插座设计,以STM32嵌入式单片机为主体,将计算机技术和检测技术有机结合,设计一款电量参数采集装置,实现电压、电流信号的数据采集任务,电压、电流和功率在上位机的显示任…...
2025年人工智能技术:Prompt与Agent的发展趋势与机遇
文章目录 一、Prompt与Agent的定义与区别(一)定义(二)区别二、2025年Prompt与Agent的应用场景(一)Prompt的应用场景(二)Agent的应用场景三、2025年Prompt与Agent的适合群体(一)Prompt适合的群体(二)Agent适合的群体四、2025年Prompt与Agent的发展机遇(一)Prompt的…...
vue2-v-if和v-for的优先级
vue2-v-if和v-for的优先级 1.v-if和v-for的作用 v-if是条件渲染,只有条件表达式true的情况下,才会渲染v-for是基于一个数组来渲染一个列表,在v-for的时候,保证给每个元素添加独一无二的key值,便于diff算法进行优化 …...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
