【Bugku】秋名山老司机 详细题解 Writeup

CTFWeb——Bugku秋名山老司机 详细题解 1 阅读详情
import requests
import re
url = 'http://123.206.87.240:8002/qiumingshan/'
s = requests.Session()
req = s.get(url)
expression = re.search(r'(\d+[+\-*])+(\d+)', req.text).group()
# expression = req.text[req.text.find('<div>')+5:req.text.find('=?')]

result = eval(expression)
data = {'value': result}
#print(s.post(url).encoding)
#ISO-8859-1

#print(s.post(url, data=post).text)
#åŽŸæ¥ä½ ä¹Ÿæ˜¯è€å¸æœº Bugku{YOU_DID_IT_BY_SECOND}
#text中存的是Beautifulsoup根据猜测的编码方式将content内容编码成字符串text是。没有前面的b,对于纯ascii码,这两个可以说一模一样,对于其他的文字,需要正确编码才能正常显示

print(s.post(url, data=data).content.decode('utf-8'))
#中文转码
#原来你也是老司机 Bugku{YOU_DID_IT_BY_SECOND}
#content是字节码,直接输出会发现前面存在b'这样的标志,显示乱码,这时需要用.content.decode('utf-8'),中文常用utf-8和GBK,GB2312,.content进行手动编码
#resp.text返回的是Unicode型的数据。
#resp.content返回的是bytes型也就是二进制的数据。


'''

1081018835-1070311562*568188127-642812755+508283747-177925746*1428769176-1723352262*710685256-143853778*1404955122
计算响应内容中的表达式并用 POST 请求返回结果,实质还是快速反弹包含正确信息的 POST 请求,详情可参考详解 CTF Web 中的快速反弹 POST 请求
1、有关 requests 的部分此处不细讲,唯一要注意必须利用会话对象 Session(),否则提交结果的时候,页面又重新生成一个新的表达式,结果自然错误。
2、第 6 行是利用正则表达式截取响应内容中的算术表达式。首先引入 re 模块,其次用 search() 匹配算术表达式,匹配成功后用 group() 返回算术表达式的字符串。
3、第 7 行在获得算术表达式的字符串后,直接利用 Python 的內建方法 eval() 来计算出结果,简单、暴力、快捷。




import requests
url = "http://123.206.87.240:8002/qiumingshan/"
s = requests.Session()
req = s.get(url)
expression = req.text[req.text.find('<div>')+5:req.text.find('=?')]
result = eval(expression)
post = {'value': result}
print(s.post(url, data=post).text)

a = '''
<head>
<title>下面的表达式的值是秋名山的车速</title>
<meta charset="UTF-8">
</head>
<p>亲请在2så†
计算老司机的车速是多少</p>
<div>512141817+1892942738*546487160*2117517648*2119867596+787513764*573152593+1531645841-2069881943+1091647023+1264534072=?;</div>
<style>
div,p{
text-align: center;
margin: 0 auto;
}
</style>
'''
expression = a[a.find('<div>')+5:a.find('=?')]
# a[A:B]截取字符串,序列从A到B,<是0,+5是到5,直到=?的序列号




import requests
import re
s = requests.Session()
req = s.get("http://123.206.87.240:8002/qiumingshan/")
expression = re.search(r'^<div>(.+)=\?;</div>$', a, re.M | re.S) #re.M|re.S匹配多行或匹配一行
# (.+) 匹配所有 包括中文 换行后的也在 原样展示 (.+?) 匹配后的是竖着 一个一个展示
# re.M	多行匹配,影响 ^ 和 $
# re.S	使 . 匹配包括换行在内的所有字符

# <re.Match object; span=(155, 285), match='<div>512141817+1892942738*546487160*2117517648*21>

data = {
    "value": eval(expression.group(1)) #这里是value是从网页提示中得到的
}
flag = s.post("http://123.206.87.240:8002/qiumingshan/", data)
print(flag.text)



#!coding:utf-8
import requests,re

s = requests.session()
url = 'http://123.206.87.240:8002/qiumingshan/'
request = s.get(url)
spon = request.text
vul = re.findall('>(\d+.+)\=',spon)
result = {'value':str(eval(vul[0]))}
data = s.post(url,data=result)
flag = data.text
print(flag)








import requests
import re
 
mysession = requests.Session()
myrequests1 = mysession.get("http://123.206.87.240:8002/qiumingshan/")
mystr = re.findall(r'<div>.*</div>', myrequests1.text)  # 第一个参数是正则,第二个参数是要截取的字符串
str_calculate = mystr[0].strip('=?;</div>')
result = {                            # 这个result也可以是字符串
    "value": eval(str_calculate)
}
#print(result)
myrequests2 = mysession.post("http://123.206.87.240:8002/qiumingshan/", data=result)
print(myrequests2.text)






#! /usr/bin/env python3
# -*- coding: utf-8 -*-

import requests
from bs4 import BeautifulSoup
 
url = "http://123.206.87.240:8002/qiumingshan/"
s = requests.session()
r = s.get(url)
# 将编码设置为 utf8
r.encoding = 'utf-8'
# bs解析网页内容
soup = BeautifulSoup(r.text, 'html.parser')
#提取div里的内容
num = soup.div.text 
# 赋值 post 参数
final = {'value': eval(num.replace('=?;', ''))}
print(final)
r = s.post(url, data=final)
r.encoding = 'utf-8'
print(r.text)


'''









import requests
import re
url = 'http://123.206.87.240:8002/qiumingshan/'
r = requests.session()
requestpage = r.get(url)
ans = re.findall('<div>(.*?)=?;</div>', requestpage.text) #获取表达式
ans = "".join(ans) #列表转为字符串
ans = ans[:-2] #去掉最后的=?
post = eval(ans) #计算表达式的值
data = {'value': post} #构造post的data部分
flag = r.post(url, data=data)
print(flag.text)



'''

所得知识点:
1、python的requests库
在这道题中我们用了requests中的session()函数、get()函数、post()函数、下面一一说明:
session对象可以使我们跨请求保持某些参数,也可以在同一个session实例发出的所有请求之间保持cookies
——创建一个session对象可以拥有以上的作用(但并没有实例化);
然后get()函数,用来进行模拟发送,获得相应url站点的信息,可分为有参和无参两种情况:

无参:
如以上代码,括号内是一个url,表示获取这个url内的信息。

有参:
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://123.206.87.240:8002/qiumingshan/
post 类似

2、re库
re库的主要用途就是进行字符串匹配(看着就会有很多我记不住的各种函数嘤嘤嘤)wuling这个博客很详细
说到字符串匹配,正则表达式完全是绕不过的啊2333,在re库中,几乎所有的函数参数都有正则表达式,re库中正则表达式有两种表示方式:
①raw string类型
表示为:r'text',例如:r'[1-9]\d{5}',raw string是指不包含转义符的字符串;
如果正则表达式里含有转义字符之类的敏感字符,最好用这种方法。
②string类型
例如:'[1-9]\\d{5}';'\\d{3}-\\d{8}|\\d{4}-\\d{7}'

3、用到的python的其他函数
join()函数,用法:例如ex.join(str)
参数说明
ex:分隔符。可以为空(如本题)
str:要连接的元素序列、字符串、元组、字典
上面的语法即:以ex作为分隔符,将str所有的元素合并成一个新的字符串
返回值:返回一个以分隔符ex连接各个元素后生成的字符串







<?php
session_start();

$table = array('+', '-', '*');

function initial($table)
{
    // 设置值
    $formula = (string) mt_rand();

    for ($i = 0; $i < 10; $i++) {
        $formula .= $table[mt_rand(0, 2)] . (string) mt_rand();
    }

    $value = eval('return ' . $formula . ';');
    $_SESSION['value'] = $value;
    $_SESSION['formula'] = $formula;
    $_SESSION['time'] = date_timestamp_get(date_create());
    echo '<p style="text-align:center">亲请在2s内计算老司机的车速是多少</p>' . PHP_EOL;
    echo '<div>' . $formula . '=?;</div>' . PHP_EOL;
}

if (!isset($_SESSION['value'])) {
    initial($table);
} else {
    $diff = date_timestamp_get(date_create()) - $_SESSION['time'];

    if ($diff <= 2) {
        if (isset($_POST['value'])) {
            if ($_POST['value'] === (string) $_SESSION['value']) {
                echo 'You get the flag';
            }
        } else {
            echo 'Give me value post about ' . $_SESSION['formula'] . '=?';
        }
    } else {
        initial($table);
    }
}
?>







#! /usr/bin/python3
# -*- coding: utf-8 -*-

import requests
import re

# 打印信息
def print_response(res):
    for v in res.headers:
        print(v+': '+res.headers[v])

    print()
    print(res.content.decode())

url = 'http://123.206.87.240:8002/qiumingshan/'

s = requests.Session()

response = s.get(url)
print("The first response:")
print_response(response)

# 匹配formula(公式)
result = (re.search('(?<=<div>).+(?==)',response.content.decode()).group())

# 解析公式
result = eval(result)
print(result)

html = s.post(url,{'value':str(result)})

print("The second response:")
print_response(html)





###
The first response:
Server: nginx
Date: Wed, 25 Nov 2020 12:12:36 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=60
Set-Cookie: PHPSESSID=c076a1rj4gs4p75vs0hvslqf5ehccj99; path=/; HttpOnly, Timeout=alive; expires=Wed, 25-Nov-2020 12:12:38 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Encoding: gzip

<head>
<title>下面的表达式的值是秋名山的车速</title>
<meta charset="UTF-8">
</head>
<p>亲请在2s内计算老司机的车速是多少</p>
<div>1310615970-1188642998*717630350+1859300341+539949424-1157666960*1524438752-1832476037*279122508-1343317687-288438169=?;</div>
<style>
div,p{
text-align: center;
margin: 0 auto;
}
</style>
-3129283971633054137
The second response:
Server: nginx
Date: Wed, 25 Nov 2020 12:12:36 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=60
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Encoding: gzip

原来你也是老司机 Bugku{YOU_DID_IT_BY_SECOND}

'''



爬虫笔记-Bugku秋名山老司机(入门) 记一次python爬虫笔记 题目:bugku-秋名山老司机 题目要求:两秒内提交一道很长的计算题答案,并且式子每次刷新都会变动 如: 多刷新几次可见题目提示,需要用post传入值,变量名为value 创建py文件,导入 requests 库和 re 库 并且创建一个会话对象,用它发送一个get请求 # requests库用于发送请求 # re库用于匹配正则表达式 import requests import re # requests.session() 维持会话 s = requests.session() r = s.get("http://192.168.4.243:1035/") 立即下载

相关推荐

AutoCAD二次开发(.Net)之XData

对于CAD中的实体进行筛选等操作,常常会用到实体的XData属性,下面介绍一下实体的XData的增删改。 //XData的新增,修改跟新增一样,new一个ResultBuffer,赋值即可 Document doc=Application.DocumentManager.MdiActiveDocument; using (DocumentLock dl = doc.LockDocument()) { using (Transaction trans = doc.TransactionManager.S.

qq_21489689的博客 2593

BugkuCTF: 秋名山老司机(web)

题目描述: 亲请在2s内计算老司机的车速是多少 1565348110-1585852319+1424136689-501596850-364488737*872756914-663618483-1120007195*1119001272-1463806595*1200528853=?; 在两秒内刷新页面后会出现提示让提交计算出来的值,且url没有变化,表明确实要两秒内提交 Give me va...

s0il的博客 3710

OJ(while+cin.get()判断结束)

今天要记录一道看起来十分简单的OJ题目,但开始对于cin的一些操作忘得差不多了,没做出来,故记下来给自己提个醒。 描述 给出包含N个单词的一行输入,输出N行。第一行和输入一样。每次输出过一行后,这一行的第一个单词在下一行被放到最后。 输入 包含N个单词的字符串,单词以一个空格分开。N不在输入中给出,你需要计算单词的数量来获得。字符串包含的字符数小于100。 输出 输出N行。...

Stark_JC的博客 2357

[bugku]-秋名山车神详解

解题 每一次刷新都不一样 post传参value 脚本1 import requests import re url = 'http://114.67.175.224:10053/' s = requests.Session() source = s.get(url) expression = re.search(r'(\d+[+\-*])+(\d+)', source.text).group() result = eval(expression) post = {'value': result} p

weixin_52116519的博客 6453

别再盲调PID了!手把手教你用VOFA+实时可视化电机速度曲线(附STM32F4源码)

本文详细介绍了如何使用VOFA+工具实现PID参数的可视化调试,帮助开发者从盲调转向精准调优。通过实时可视化电机速度曲线,结合STM32F4源码示例,展示了如何高效调试Kp、Ki、Kd参数,解决响应慢、超调等常见问题,大幅提升电机控制系统的性能。

weixin_28366475的博客 129

FreeRTOS笔记(十五)FreeRTOS总结

文章目录01 - 裸机和FreeRTOS区别1.1 - 裸机1.2 - FreeRTOS1.3 - 区别02 - 对FreeRTOS的感受03 - 推荐 上一文链接:FreeRTOS笔记(十四)[简] 软件定时器、事件组、任务通知 01 - 裸机和FreeRTOS区别   学完FreeRTOS,应该要自己总结一下FreeRTOS和裸机的区别,宏观上说,FreeRTOS是一个运行在裸机上的微内核,...

单眼皮根号三的博客 4114

BugkuCTF_Web——“秋名山老司机”、“速度要快”、“cookies欺骗”

文章目录一、“秋名山老司机”二、“速度要快”三、“cookies欺骗”完 一、“秋名山老司机” 开启环境,提示要在两秒钟计算结果 多次刷新发现每次的值不一样,并且知道了答案要通过赋值给value然后post上去 想到可以通过获取网页源代码使用eval()执行算式 编写以下python脚本 #requests实现请求,bs4获取标签内容 import requests,bs4 url = 'http://123.206.87.240:8002/qiumingshan/' #由于每次刷新后算式会不同,需要

Ho1aAs‘s Blog 1518

手把手教你用EG2153搭建开关电源:SOP-8封装驱动芯片的5个设计技巧

本文详细介绍了使用EG2153自振荡半桥驱动芯片搭建开关电源的五个核心设计技巧。内容涵盖从深入理解芯片工作机制、频率编程计算误区、SOP-8封装的热管理方案,到死区时间评估与外部保护电路设计,以及实战调试与故障排查指南,旨在帮助工程师实现稳定可靠的小功率电源设计。

weixin_29200485的博客 378

bugKuctf-秋名山老司机

bugKuctf-秋名山老司机欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 ...

second_dream99的博客 1843

2篇1章1节:数据的基本概念以及 R 中的数据结构、向量与矩阵的创建及运算

本文详细介绍了R语言中常见的数据结构的向量和矩阵。通过掌握这些数据结构的基本概念和操作技巧,可以更高效地处理和分析数据。

MD Code 1243

古风仙侠少女三视图提示词,一键生成角色设定

3D中国写实CG风格,CG渲染质感,精细3D建模,PBR物理材质,细腻服装纹理,电影级灯光,丰富表情,高精度场景,次世代引擎画质。平视正交视角,统一光照,纯白背景,无文字无水印,避免强透视和动态变形。3D中国写实CG风格,CG渲染质感,精细3D建模,PBR物理材质,细腻服装纹理,电影级灯光,丰富表情,高精度场景,次世代引擎画质。3D中国写实CG风格,CG渲染质感,精细3D建模,PBR物理材质,细腻服装纹理,电影级灯光,丰富表情,高精度场景,次世代引擎画质。少女,古风仙侠少女气质,灵动、温婉、仙气。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 1064

BUGKU_CTF WEB(21-35) writeUP

第21题:秋名山老司机 根据题目要求可以看出题目要求在两秒内计算出div标签中给出的值。这里采用py传递value参数。通过post传递参数。session保持会话,从而拿到flag。 第22题:速度要快。 burp抓包发现一个response请求头。里面有一个flag属性。第一次判断是base64加密的。 观察注释。传post传margin,控制session保持flag不变。写python。...

单核CPU的小朋友的博客 4万+

Linux内存从0到1学习笔记(10.1 BugsShooter之cma配置过小导致页迁移繁忙而内存申请失败)

通过向武神讨教,顺便记录cma内存有空间但页繁忙(页正被访问,无法迁移)迁移不了导致cma内存分配失败的排查过程。

从0到1,突破自己 1万+

Bugku web18 Writeup

Bugku web1 Writeup 题目描述 秋名山车神 亲请在2s内计算老司机的车速是多少 1418005443629560789-15192333921175548399-2093405283-12328199721369963596+21310695541983217943*1732954684+1645835278=?; 分析 秋名山车神,2s内 所以就是个快字,那我慢慢计算不行嘛? 尝试刷新网页,果然表达式在变…多刷几次,发现偶尔会出现这样的: Give me value post

Code_Aape的博客 658

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Bugku-web writeup

前言: 出于某些原因一下题目无法完成:本地保含、点击一百万次、welcome to bugkuctf、过狗一句话、insert into注入、这是一个神奇的登陆框、文件包含2、孙xx的博客、login4以及平台复现其他比赛的某些题目。 web2 f12查看源代码: 计算器 将maxlength改成2再输入值即可。 web基础$_GET web基础$_POST 矛盾 传入一个能绕过is_numeric的数字即可。 web3 源码中有一串unicode编码,解密即可。 域名解析 把fla

X1angyu的博客 723

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

bugku Web write up 二

XSS 先来最简单的弹窗 ?id=&lt;srcipt&gt;altert(/xss/)&lt;/script&gt; 查看源码 发现&lt;&gt;被过滤掉了 这里学到一个技巧,就是用Unicode编码绕过 payload:?id=\u003cimg src=1 onerror=alert(_key_)\u003e 速度要快 这种题就是编程题 上脚本,注意这题是用m...

0verWatch的博客 8066

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

BugkuCTF Writeup——Web

BugkuCTF Web——Writeup 作为我这个新手刷的第一个平台,bugku上面的大部分题目还算蛮友好的,这里主要记录一下其中我认为还蛮有意思的题目。 web2 直接查看F12查看源码即可得flag。 计算器 简单计算题,但输入框限制输入长度,直接改改输入框的前端代码,输入计算结果,得到flag。 web基础$_GET 代码审计,GET方法传入what变量的值为’flag’即可得fl...

Lethe's Blog 3829

CTF解题-Bugku_Web_WriteUp (下)

BugkuCTF 练习平台的 Web 题目往后越做越难……单独起新的博文记录该难度级别的题目。 No.1 Python脚本算数 题目“秋名山老司机”,查看解题链接: 百度知道这道题是快速反弹 POST请求,HTTP 响应头获取了一段有效期很短的 key 值后,需要将经过处理后的 key 值快速 POST 给服务器,若 key 值还在有效期内,则服务器返回最终的 flag,否则继续提示“请再加快速度!!!”。所以你别想手动传值了,必须使用python脚本了,python中有eval() 函数可以快速计算

道阻且长,行则将至 3767

bugkuctf-web(Writeup)

目录web2计算器计算器 web2 题目: http://123.206.87.240:8002/web2/ Writeup: #查看页面源代码 ctrl + U F12 view-source: 计算器 题目: http://123.206.87.240:8002/yanzhengma/ Writeup: 正确答案是两位数字,maxlength限制了我们输入的字数,只允许输入1位。 由于前端代码在我们浏览器加载的,我们可以随意控制前端代码,修改maxlength大一些,再输入正确答案,即可获取f

alert['Hello World'] 4124

BugkuCTF—Web writeup第一部分

BugkuCTF—Web writeup第一部分web2计算器web基础$_GETweb基础$_POST矛盾web3域名解析你必须让他停下本地包含变量1web5头等舱网站被黑 BugkuCTF链接 web2 计算器 web基础$_GET web基础$_POST 矛盾 web3 域名解析 你必须让他停下 本地包含 变量1 web5 头等舱 网站被黑 ...

Senimo 2139

BUGKU-WEB

5.矛盾 打开链接,内容如下: $num=$_GET['num']; if(!is_numeric($num)) { echo $num; if($num==1) echo 'flag{**********}'; } is_numeric():检测字符串是否只由数字组成,如果字符串中只包括数字,就返回Ture,否则返回False。(注意是只包括数字) 要求我们不能输入纯数字1,但是num...

wojiushilsy的博客 781

bugkuCTF Writeup (Web)10-14

SQL注入1 代码审计 先过滤sql关键字,再过滤xss(实际上就是删除一些html标签),这个顺序就很好办了,把HTML标签插到sql关键字里面,就绕过了第一个过滤,第二个过滤之后就还原了sql关键字 之后就是基本的判断字段数、爆数据库名、爆flag payload:http://103.238.227.13:10087/?id=1 union select id,hash fr

Troublor的博客 4281

Bugku web19&秋名山车神

Bugku web18秋名山车神文章目录前言一、知识补充1.正则表达试补充2.re 函数介绍二、web 19 解题过程三 .秋名山车神总结 文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录文章目录前言一、知识补充1.正则表达试补充2.re 函数介绍二、web 19 解题过程三 .秋名山车神总结 前言 题目设计到正则表达试的运用 提示:以下

qq_46540840的博客 2420

从脚本学python(秋名山车神)

最近做bugku的时候,做到秋名山车神那题,连python都不会(泪)很惭愧 https://zhuanlan.zhihu.com/p/141333473 脚本代码来自上面这个writeup import requests url ="http://123.206.87.240:8002/qiumingshan/" s = requests.Session() req = s.get(url) a = req.text[req.text.find('<div>')+5:req.text.fin

baidu_39504221的博客 694

CTF题目记录8

(还有坑没填好) 最近在刷bugku 感觉对新手还是挺友好的,同时也能学到不少东西,每日更新几题准备记录的吧 秋名山老司机 亲请在2s内计算老司机的车速是多少(最基本的脚本题???) 这题很多平台上都有,脚本必练:request库,re库 一开始不知道哪里传值,但是post一个数据后就会有提示的,发现要post一个value参数 import requests import re url='http://123.206.87.240:8002/qiumingshan/' s=requests.Sessio

kkzzjx 1069

BUGKU---秋名山老司机

脚本: #!/usr/bin/python #coding=utf-8 import requests url='http://123.206.87.240:8002/qiumingshan/' r=requests.session() r1=r.get(url) r2=r1.text.split("<div>")[1].split("?")[0].split("=")[0] s=e...

weixin_43803070的博客 241
上一篇: 大一 计算机应用基础 进制转换
下一篇: OffSec Labs Proving grounds Play——FunboxEasyEnum
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值