Day16 Kali被动信息收集(开源情报)

关注 泷羽Sec泷羽Sec-静安公众号,这里会定期更新与 OSCP、渗透测试等相关的最新文章,帮助你理解网络安全领域的最新动态。后台回复“OSCP配套工具”获取本文的工具

被动信息收集(Passive Information Gathering)主动信息收集(Active Information Gathering) 的区别

在网络安全、渗透测试和威胁情报分析中,这两种信息收集方式的核心区别在于 是否直接与目标系统交互

1. 被动信息收集

  • 定义
    通过公开资源或第三方数据源获取目标信息,​​不直接与目标系统或网络通信​​。
  • 特点:
    • 隐蔽性高:目标无法感知被探测。
    • 依赖公开数据:利用搜索引擎、社交媒体、DNS记录、数据库等。
    • 法律风险低:通常不违反法律(需遵守隐私政策)。
  • 常见方法:
    • 搜索引擎:Google Hacking(site:, filetype: 等语法)。
    • WHOIS查询:获取域名注册信息(注册人、DNS服务器)。
    • DNS解析:通过公开DNS记录获取子域名、IP地址(如 dignslookup)。
    • 历史数据:查看网页快照(Wayback Machine)、漏洞数据库(CVE、Exploit-DB)。
    • 社交媒体:LinkedIn、GitHub(员工信息、代码泄露)。
    • Shodan/Censys:搜索暴露的物联网设备和服务。
  • 适用场景:
    • 渗透测试初期,确定目标范围。
    • 威胁情报分析,追踪攻击者基础设施。
    • 避免触发目标安全告警(如IDS/IPS)。

2. 主动信息收集

  • 定义
    ​直接与目标系统或网络通信​​,通过发送探测请求获取信息。
  • 特点:
    • 交互性强:可能触发安全机制(如防火墙、日志记录)。
    • 信息更精准:直接验证目标状态(端口开放性、服务版本)。
    • 法律风险高:未经授权的主动探测可能违法(如《计算机欺诈与滥用法》)。
  • 常见方法:
    • 端口扫描:Nmap(-sS 半开扫描)、Masscan。
    • 服务指纹识别:Banner抓取(Telnet、Netcat)、Nmap脚本(-sV)。
    • 漏洞探测:Nessus、OpenVAS(验证已知漏洞)。
    • 网络嗅探:Wireshark、tcpdump(分析流量)。
    • 暴力破解:Hydra(测试弱密码)、DirBuster(目录枚举)。
    • 主动DNS查询:直接向目标DNS服务器请求记录。
  • 适用场景:
    • 渗透测试中后期,验证漏洞可利用性。
    • 红队行动中模拟真实攻击行为。
    • 需获得明确授权(如授权渗透测试)。

对比表格

特征被动信息收集主动信息收集
交互性不直接与目标交互直接与目标交互
隐蔽性高(目标无法察觉)低(可能触发告警)
数据来源公开资源、第三方数据库目标系统的响应数据
法律风险低(需遵守隐私政策)高(需明确授权)
常用工具Shodan, WHOIS, Wayback Machine, GoogleNmap, Nessus, Hydra, Wireshark
渗透测试阶段前期(侦查)中后期(漏洞利用、横向移动)

实战建议

  1. 优先被动收集
    在未授权时仅使用被动方法,避免法律风险。例如:通过GitHub搜索目标代码泄露。
  2. 主动收集需授权
    在渗透测试中,主动扫描前必须获得书面授权。例如:使用Nmap扫描客户网络。
  3. 混合使用
    结合两者提高效率。例如:被动收集子域名后,主动验证其存活性和服务版本。

开源情报(OSINT,Open Source Intelligence)是指从公开可获取的来源中收集、分析和利用信息,用于支持决策或安全分析。其核心特点是数据来源完全公开(如互联网、媒体、政府记录等),无需侵入目标系统,但需通过技术手段筛选有效信息。


什么是开源情报,如何获取开源情报?

开源情报(OSINT)的核心特点

  1. 公开性:数据来自免费或公开渠道(如网页、社交媒体、数据库)。
  2. 合法性:遵守隐私政策和法律法规(如 GDPR、CCPA)。
  3. 非侵入性:不直接与目标交互,避免触发安全告警。
  4. 多样性:覆盖文本、图像、视频、元数据等多种格式。
  5. 可验证性:通过交叉比对多个来源提高信息可信度。

如何获取开源情报?

1. 基础数据来源
  • 搜索引擎:
    • Google Dorking:使用高级语法(site:example.com filetype:pdf)挖掘敏感文件。
    • Bing/Yandex:特定区域或语言的内容(如俄语信息用Yandex更高效)。
  • 社交媒体:
    • LinkedIn:挖掘员工职位、技术栈(如“某公司使用Apache Tomcat”)。
    • Twitter/Telegram:追踪威胁情报(如勒索软件团伙的暗网活动)。
    • GitHub/GitLab:搜索代码泄露、API密钥或硬编码密码。
  • 域名与IP:
    • WHOIS查询:获取域名注册人、邮箱、电话(工具:WhoisXML API)。
    • DNS记录:通过 dig 或在线工具(ViewDNS)解析子域名和MX记录。
    • 证书透明度日志(如crt.sh):发现目标关联的SSL证书和子域名。
2. 高级技术工具
  • 网络资产测绘:
    • Shodan:搜索暴露的物联网设备(如摄像头、数据库)。
    • Censys:分析IP的开放端口和服务指纹(如Apache版本)。
    • FOFA:国内版Shodan,侧重中文目标。
  • 元数据提取:
    • ExifTool:从图片中提取GPS坐标、拍摄设备。
    • FOCA:分析文档(PDF/Word)中的隐藏元数据。
  • 历史数据:
    • Wayback Machine:查看网站历史快照(如已删除的登录页面)。
    • DNS历史记录:通过SecurityTrails追溯IP变更。
3. 自动化与框架
  • OSINT集成工具:
    • Maltego:可视化关联分析(如域名→IP→员工邮箱→社交媒体)。
    • SpiderFoot:自动聚合WHOIS、DNS、漏洞库等数据。
    • theHarvester:批量收集邮箱、子域名(支持Google、Bing、PGP密钥服务器)。
  • 自定义脚本:
    • 使用Python(requestsBeautifulSoup)爬取特定网站数据。
    • 调用API(如Twitter API、Shodan API)实现数据批量获取。
4. 暗网与威胁情报
  • 暗网监控:
    • 使用 Tor浏览器 访问暗网论坛(如Dread),搜索数据泄露记录。
    • 工具:DarkSearch.io(暗网搜索引擎)。
  • 漏洞与威胁库:
    • CVE Details:查询已知漏洞的利用方式。
    • VirusTotal:分析文件哈希、URL关联的恶意活动。
    • AlienVault OTX:获取全球威胁情报指标(IOC)。

实战案例

  1. 定位数据泄露来源:
    • 在GitHub搜索 companyname password,发现员工误传的配置文件含数据库密码。
    • 通过Shodan验证该数据库IP是否暴露在公网。
  2. 钓鱼攻击溯源:
    • 从钓鱼邮件元数据中提取发信IP,用AbuseIPDB查询历史恶意行为。
    • 关联该IP的SSL证书,发现注册邮箱与某暗网论坛账号一致。
  3. 供应链攻击分析:
    • 通过Crunchbase找到目标供应商的客户列表。
    • 使用Censys扫描这些客户的公网资产,发现共用同一脆弱SaaS服务。

注意事项

  1. 法律合规:
    • 避免侵犯隐私(如爬取LinkedIn个人资料可能违反用户协议)。
    • 在欧盟地区需遵守GDPR(如模糊化处理个人信息)。
  2. 道德准则:
    • 仅用于授权测试或防御分析,禁止恶意用途。
  3. 信息验证:
    • 交叉验证多个来源(如WHOIS邮箱是否与社交媒体账号关联)。
    • 警惕虚假信息(如伪造的GitHub仓库或域名注册信息)。

总结

开源情报(OSINT)是“从公开信息中提炼黄金”的技术,核心在于:

  1. 明确目标(如“获取某公司的网络拓扑”)。
  2. 选择工具链(如Maltego关联分析 + Shodan验证)。
  3. 自动化与人工分析结合,最终形成可行动的威胁情报。

Whois 信息收集

还是官方的靶机网址 https://www.megacorpone.com/

whois megacorpone.com

image-20250524170205065

image-20250524170317085

image-20250524220349042

强制指定 WHOIS 服务器(某些域名需指定注册商服务器):

whois -h whois.verisign-grs.com megacorpone.com

image-20250524220711028

WHOIS 输出信息解析

1. 关键字段解读
字段说明
Domain Name域名名称(如 example.com)。
Registry Domain ID域名在注册局的唯一标识符(用于追踪变更)。
Registrar域名注册商(如 GoDaddy、Namecheap)。
Creation Date域名注册日期(可用于判断目标运营时长)。
Expiration Date域名过期时间(若未续费可能被抢注)。
Updated Date最后更新时间(如DNS记录或所有者变更)。
Domain Status域名状态(如 clientTransferProhibited 表示禁止转移)。
Name Server域名使用的DNS服务器(可进一步探测子域名)。
Registrant Contact注册人信息(可能被隐私保护服务隐藏)。
Admin/Technical Contact管理员和技术联系人信息(可能包含邮箱、电话)。
2. 隐私保护的影响
  • Whois Privacy:

    注册商提供隐私保护服务时,关键信息(如姓名、邮箱、电话)会被替换为代理信息:

    Registrant Name: REDACTED FOR PRIVACY
    Registrant Email: contact@privacyguard.example
    

    此时需通过其他方式(如历史记录、关联域名)绕过隐私保护。

3. IP WHOIS 的额外信息
  • IP 范围:

    NetRange: 192.0.2.0 - 192.0.2.255  # IP地址段
    CIDR: 192.0.2.0/24                 # 子网掩码
    Organization: Example ISP          # 所属机构(可能是ISP或企业)
    
    3. 自动化工具整合
    • 与脚本结合:使用 Python 的python-whois库批量查询域名:

      import whois
      from datetime import datetime
      
      def get_domain_info(domain_name):
          try:
              domain = whois.whois(domain_name)
              
              info = {
                  "域名": domain_name,
                  "注册商": domain.registrar,
                  "创建日期": format_date(domain.creation_date),
                  "过期日期": format_date(domain.expiration_date),
                  "最后更新": format_date(domain.updated_date),
                  "状态": list_to_str(domain.status),  # 状态可能是列表
                  "DNS服务器": list_to_str(domain.name_servers),
                  # 关键修复:处理字段为 None 的情况,统一转为 'N/A'
                  "注册人姓名": getattr(domain, 'name', 'N/A') or 'N/A',
                  "注册人邮箱": getattr(domain, 'email', 'N/A') or 'N/A',
                  "注册人电话": getattr(domain, 'phone', 'N/A') or 'N/A',
                  "注册机构": getattr(domain, 'org', 'N/A') or 'N/A',
                  "地址": getattr(domain, 'address', 'N/A') or 'N/A'
              }
              return info
          except Exception as e:
              return {"错误": str(e)}
      
      def format_date(date):
          if isinstance(date, list):
              return [d.strftime("%Y-%m-%d") if isinstance(d, datetime) else d for d in date]
          elif isinstance(date, datetime):
              return date.strftime("%Y-%m-%d")
          return date or 'N/A'  # 处理日期为 None 的情况
      
      def list_to_str(data):
          if isinstance(data, list):
              return ", ".join(str(item) for item in data)
          return data or 'N/A'  # 处理数据为 None 的情况
      
      if __name__ == "__main__":
          target_domain = "megacorpone.com"
          result = get_domain_info(target_domain)
          
          print("\n[+] WHOIS 情报分析结果:")
          print("-" * 50)
          for key, value in result.items():
              if key == "错误":
                  print(f"  ! 查询失败: {value}")
              else:
                  print(f"  {key:>12} : {value}")
          
          # 修复判断逻辑:先检查是否为 'N/A'
          if result.get('注册人邮箱', 'N/A') != 'N/A':
              print("\n[+] 潜在攻击面建议:")
              print(f"  - 对邮箱 {result['注册人邮箱']} 进行钓鱼或密码爆破测试")
          if result.get('DNS服务器', 'N/A') != 'N/A':
              print(f"  - 扫描DNS服务器 {result['DNS服务器']} 的开放端口(如53 UDP/TCP)")
      

      image-20250524221631385

Google 信息收集

用法总集篇:https://www.exploit-db.com/google-hacking-database

1. 敏感文件与数据泄露

语法用途
site:megacorpone.com filetype:sql搜索目标域名的SQL数据库文件(可能含明文密码或数据表结构)。
site:megacorpone.com "-----BEGIN RSA PRIVATE KEY-----"查找泄露的SSH私钥。
site:megacorpone.com filetype:env OR filetype:ini查找 .env(环境变量)或 .ini(配置文件),常含API密钥、数据库密码。
site:megacorpone.com ext:sql intext:password搜索含密码字段的SQL文件。
site:megacorpone.com "api_key" OR "api_secret"查找硬编码的API密钥。

image-20250524222351727

image-20250524222427640

image-20250524222550612

2. 后台与登录入口

语法用途
site:megacorpone.com intitle:"login" inurl:/admin查找管理员登录页面(如 /admin/login.php)。
site:megacorpone.com inurl:/wp-admin定位WordPress后台(若未重命名)。
site:megacorpone.com intitle:"index of /cgi-bin"发现CGI脚本目录(可能含未授权访问的脚本)。
site:megacorpone.com inurl:debug查找调试页面(如 debug.php,可能暴露代码逻辑)。

3. 服务器与目录信息泄露

语法用途
intitle:"index of" site:megacorpone.com列出开放目录(可能暴露敏感文件)。
site:megacorpone.com "Directory listing for"另一种目录列表泄露的关键词。
site:megacorpone.com "Apache/2.4.29 (Ubuntu) Server at"根据服务器Banner信息定位特定版本的主机(可关联CVE漏洞)。
site:megacorpone.com "X-Powered-By: PHP/7.2"查找运行指定PHP版本的服务器。

4. 备份文件与历史数据

语法用途
site:megacorpone.com filetype:bak搜索备份文件(如 web.config.bakdatabase.sql.bak)。
site:megacorpone.com inurl:/backup查找备份目录(可能含数据库或代码备份)。
site:megacorpone.com "backup.zip"直接定位压缩备份文件。
site:megacorpone.com "This is a snapshot of"查找网站快照备份页面。

5. 漏洞与错误信息利用

语法用途
`site:megacorpone.com “error”“warning”`
site:megacorpone.com "sql syntax near"定位SQL报错页面(可能存在SQL注入漏洞)。
site:megacorpone.com "Stack trace:"查找Java/PHP堆栈跟踪信息(暴露代码逻辑)。
site:megacorpone.com "PHP Fatal error"发现PHP致命错误页面。

6. 员工与内部信息收集

语法用途
site:linkedin.com employees megacorpone.com搜索LinkedIn上目标公司的员工信息。
site:megacorpone.com "confidential" OR "internal"查找标有“内部”或“机密”的文件。
site:github.com "megacorpone.com" password在GitHub中搜索目标相关代码中的密码泄露。
site:megacorpone.com "@megacorpone.com" filetype:csv查找包含公司邮箱的CSV文件(可能为员工列表)。

image-20250524222722742

7. 高级组合技巧

  • 排除干扰
    site:megacorpone.com -site:www.megacorpone.com(排除主站,专注子域名)。
  • 通配符模糊搜索
    site:megacorpone.com inurl:prod*env(匹配 prod.envproduction.env 等)。
  • 时间范围限定
    在Google搜索工具中限定时间(如过去一年),找到最新泄露的数据。

课后练习

Exercises

  1. Who is the VP of Legal for MegaCorp One and what is their email address?
  2. Use Google dorks (either your own or any from the GHDB) to search www.megacorpone.com for interesting documents.
  3. What other MegaCorp One employees can you identify that are not listed on www.megacorpone.com?
练习 1

问题
找到 MegaCorp One 的法律副总裁(VP of Legal)及其邮箱地址。

Google Hacking 解法

  1. LinkedIn 员工信息挖掘

    site:linkedin.com/in "MegaCorp One" "VP Legal"  
    
    • 搜索 LinkedIn 上职位为 “VP Legal” 且公司为 “MegaCorp One” 的用户。

      image-20250524223130436

      https://www.linkedin.com/in/mike-carlow-8128896a/

      image-20250524223400449

  2. 公司网站内部页面

    site:megacorpone.com "leadership" OR "executive team" "legal"  
    
    • 在公司官网的“领导团队”或“管理层”页面中查找法律相关职位。

    image-20250524223442277

    image-20250524223531302

  3. 文档泄露

    site:megacorpone.com filetype:pdf "VP Legal" email  
    
    • 搜索公司 PDF 文件中提及法律副总裁和邮箱的内容。
练习 2

问题
使用 Google 语法(或 GHDB 中的语法)搜索 www.megacorpone.com 的“有趣文档”。

Google Hacking 解法

  1. 敏感文件搜索

    site:megacorpone.com filetype:pdf OR filetype:doc OR filetype:xls  
    
    • 查找所有 PDF、Word、Excel 文档(可能含财务报告、客户数据)。
  2. 配置与备份文件

    site:megacorpone.com (ext:env OR ext:bak OR ext:sql)  
    
    • 搜索环境变量文件、备份文件或 SQL 数据库文件。
  3. 后台与登录入口

    site:megacorpone.com inurl:admin OR intitle:"login"  
    
    • 查找管理员后台或登录页面。
  4. 目录遍历

    site:megacorpone.com intitle:"index of" "parent directory"  
    
    • 发现开放目录列表(可能泄露源码、图片等)。

    image-20250524223724535

练习 3

问题
找出未在 www.megacorpone.com 官网列出的其他员工。

Google Hacking 解法

  1. 社交媒体与代码库

site:github.com “megacorpone.com” “employee” OR “staff”


- 在 GitHub 代码中搜索员工信息(如注释中的邮箱、测试账号)。

  ![image-20250524223824273](https://newblogimg.oss-cn-beijing.aliyuncs.com/2025/image-20250524223824273.png)

2. **会议与演讲记录**:

```markdown
site:youtube.com OR site:slideshare.net "MegaCorp One" "speaker"  
  • 查找公司员工在外部会议或演讲中公开的姓名和职位。
    image-20250524224007354
  1. 新闻稿与合作伙伴

    site:news.google.com "MegaCorp One" "announces" OR "partner"  
    
    • 从新闻稿中挖掘未在官网列出的员工(如项目负责人)。
  2. WHOIS 与域名关联

    "MegaCorp One" site:whois.com  
    
    • 通过 WHOIS 查询关联域名,获取注册人姓名和邮箱(可能为员工)。
  3. 泄露的通讯录

    site:megacorpone.com filetype:csv "contact" OR "employee"  
    
    • 搜索泄露的 CSV 通讯录文件。

Netcraft 信息收集

网址:https://searchdns.netcraft.com/

image-20250524224507660

image-20250524224547650

Recon-ng 信息收集workspaces create my_workspace

1. 安装与启动

  • 安装(Kali 默认已预装,若需更新):

    sudo apt update && sudo apt install recon-ng
    
  • 启动:

    recon-ng
    

image-20250529155428264

2. 基本工作流程

初始化数据库

首次使用时需创建数据库:

workspaces create my_workspace  # 创建工作区
workspaces load my_workspace    # 加载工作区
查看模块

列出所有可用模块:

marketplace search

image-20250529161811208

筛选特定模块(如域名枚举):

marketplace search domain
加载模块

例如查看,下载,加载 whois_pocs 模块(通过 WHOIS 查找域名信息):

marketplace info recon/domains-hosts/google_site_web
marketplace install recon/domains-hosts/google_site_web
modules load recon/domains-contacts/whois_pocs
back # 回到主界面

image-20250529162333266

设置参数

指定目标域名(以 example.com 为例):

options set SOURCE megacorpone.com
执行模块

运行当前加载的模块:(用代理运行)

run

image-20250529162559795

查看结果

查看数据库中的收集结果:

show hosts      # 显示主机信息
show contacts   # 显示邮箱/联系人

image-20250529170458146

image-20250529170207120

3. 常用模块示例

域名信息收集
modules load recon/domains-hosts/hackertarget
options set SOURCE megacorpone.com
run

image-20250529170408130

邮箱枚举(需 API 密钥,如 Hunter.io)
modules load recon/domains-contacts/hunter_io
keys add hunter_api YOUR_API_KEY  # 替换为实际 API 密钥
options set SOURCE example.com
run
子域名爆破(使用 bruteforce 字典):
modules load recon/domains-hosts/brute_hosts
options set SOURCE megacorpone.com
options set WORDLIST /usr/share/wordlists/subdomains-top1million.txt
run

image-20250529171229058

IP 关联主机发现(使用 Shodan):
modules load recon/domains-hosts/shodan_hostname
keys add shodan_api YOUR_API_KEY  # 替换为 Shodan API 密钥
options set SOURCE 192.168.1.1    # 设置目标 IP
run

4. 高级技巧

  • 批量执行模块
    使用 resource 命令批量运行脚本:

    resource /path/to/script.txt
    

    脚本内容示例:

    modules load recon/domains-hosts/hackertarget
    options set SOURCE example.com
    run
    modules load recon/domains-contacts/whois_pocs
    run
    
  • 导出数据
    将结果导出为 CSV:

    show contacts export /home/kali/contacts.csv
    show hosts export /home/kali/hosts.csv
    
  • API 密钥管理
    添加或查看已配置的 API 密钥:

    keys add shodan_api YOUR_KEY   # 添加密钥
    keys list                      # 列出所有密钥
    

练习Exercise

(Reporting is not required for this exercise)

  1. Use the recon/domains-hosts/google_site_web and recon/hosts-hosts/resolve modules to gather information on MegaCorp One.

  2. Take some time to explore other recon-ng modules.

  3. 使用 recon/domains-hosts/google_site_webrecon/hosts-hosts/resolve 模块收集 MegaCorp One 的信息。

  4. 探索其他 Recon-ng 模块。

1. 启动 Recon-ng 并创建工作区
recon-ng  # 启动工具
workspaces create megacorp_one  # 创建名为 megacorp_one 的工作区
workspaces load megacorp_one    # 加载工作区
2. 使用 google_site_web 模块发现子域名
# 加载模块
modules load recon/domains-hosts/google_site_web

# 设置目标域名(假设目标域名为 megacorpone.com)
options set SOURCE megacorpone.com

# 执行模块
run

作用
通过 Google 搜索语法 site:megacorpone.com 查找所有关联子域名(如 dev.megacorpone.comapi.megacorpone.com 等),并将结果保存到数据库。

image-20250529173407673

3. 使用 resolve 模块解析主机名 IP
# 加载模块
modules load recon/hosts-hosts/resolve

# 自动从数据库读取上一步发现的子域名,无需手动设置 SOURCE

# 执行模块
run

作用
将发现的子域名解析为 IP 地址(例如 dev.megacorpone.com → 192.168.1.100),结果存储在 hosts 表中。

4. 查看收集结果
show hosts  # 显示所有主机名及其解析的 IP

image-20250529173526053

5. 探索其他常用模块

以下为扩展操作示例,帮助进一步信息收集:

  • 子域名爆破(使用字典爆破):

    modules load recon/domains-hosts/brute_hosts
    options set SOURCE megacorpone.com
    options set WORDLIST /usr/share/wordlists/subdomains-top1million.txt
    run
    
  • 邮箱枚举(需 Hunter.io API 密钥):

    modules load recon/domains-contacts/hunter_io
    keys add hunter_api YOUR_API_KEY  # 替换为实际 API 密钥
    options set SOURCE megacorpone.com
    run
    
  • 端口扫描(使用 Bing 搜索引擎发现开放端口):

    modules load recon/hosts-ports/bing_ip
    options set SOURCE 192.168.1.100  # 替换为目标 IP
    run
    
  • WHOIS 查询(获取域名注册信息):

    modules load recon/domains-contacts/whois_pocs
    options set SOURCE megacorpone.com
    run
    

🔔 想要获取更多网络安全与编程技术干货?

关注 泷羽Sec-静安 公众号,与你一起探索前沿技术,分享实用的学习资源与工具。我们专注于深入分析,拒绝浮躁,只做最实用的技术分享!💻

扫描下方二维码,马上加入我们,共同成长!🌟

👉 长按或扫描二维码关注公众号

或者直接回复文章中的关键词,获取更多技术资料与书单推荐!📚

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

泷羽Sec-静安

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值