IOT二进制漏洞挖掘小工具

Docker常用命令汇总(100条) 管理不同的Docker守护进程上下文。- 搜索一个Docker仓库中的镜像。- 显示Docker守护进程的事件。- 显示Docker守护进程的信息。- 启动Docker后台守护进程。- 从一个压缩文件中加载一个镜像。- 登录一个Docker镜像仓库。- 登录到一个Docker仓库。- 查看Docker的系统信息。- 查看Docker的版本信息。- 查看容器中正在运行的进程。- 从一个归档文件中加载镜像。- 将一个镜像打包为归档文件。- 列出所有正在运行的容器。- 导入一个tar包为镜像。 阅读详情

1.前言

这是之前自己挖漏洞的时候自己写着用的一款小工具,主要就是能方便一点,在拿到一个要分析的程序后,能够直接分析下其程序加载的libc,架构,端序等信息,根据自定义的sink找出其程序以及加载的libc中所有的引用查看其再次封装的函数等,需要安装radare2以及r2pipe依赖。

2.代码

Beacon Config XOR KEY1

import argparse``import r2pipe``import subprocess``import json``   ``def get_dynamic_libraries(r2, file_system_path):`    `libraries = []`    `libs = r2.cmdj('ilj')`    `for lib in libs:`        `library = get_path_by_filename(lib, file_system_path)`        `libraries.append(library)``   `    `return libraries``   ``def get_path_by_filename(filename, file_system_path):`    `output = subprocess.check_output(['find', file_system_path, '-name', filename]).decode('utf-8')`    `for line in output.split('\n'):`        `if line:`            `return line``   ``def get_referencing_functions(r2, filename, target_symbols):`    `referencing_functions = []``   `    `r2.cmd('aaa')  # 执行初始分析`    `functions = r2.cmdj('aflj')``   `    `for function in functions:`        `function_name = function['name']`        `if any(symbol in function_name for symbol in target_symbols):`            `refs = r2.cmdj(f"axtj {function_name}")`            `for ref in refs:`                `ref_address = ref['from']`                `ref_functions = r2.cmdj(f"afij {ref_address}")`                `if ref_functions:`                    `ref_function = ref_functions[0]`                    `ref_function_name = ref_function['name']`                    `ref_function_disassembly = r2.cmd(f"pdf @ {ref_function_name}")`                    `referencing_functions.append((ref_function_name, ref_function_disassembly, function_name, filename))``   `    `return referencing_functions``   ``def find_referencing_functions_in_libraries(main_program, libraries, target_symbols):`    `referencing_functions = []``   `    `print("Load Program")`    `print(f"Program Name: {main_program}")`    `r2_main = r2pipe.open(main_program)``   `    `# 获取程序的架构和端序`    `program_architecture = get_architecture(r2_main)`    `program_endian = get_endian(r2_main)``   `    `print(f"Program Architecture: {program_architecture}")`    `print(f"Program Endian: {program_endian}")`    `print("------------------------------------------------------------")``   `    `main_program_referencing_functions = get_referencing_functions(r2_main, main_program, target_symbols)`    `referencing_functions.extend(main_program_referencing_functions)`    `r2_main.quit()`    `print("Load Libraries")``   `    `for library in libraries:`        `print(f"Library Name: {library}")``   `        `r2_lib = r2pipe.open(library)``   `        `# 获取库的架构和端序`        `libc_architecture = get_architecture(r2_lib)`        `libc_endian = get_endian(r2_lib)``   `        `print(f"Library Architecture: {libc_architecture}")`        `print(f"Library Endian: {libc_endian}")`        `print("------------------------------------------------------------")``   `        `library_referencing_functions = get_referencing_functions(r2_lib, library, target_symbols)`        `referencing_functions.extend(library_referencing_functions)``   `        `r2_lib.quit()``   `    `return referencing_functions``   ``def get_architecture(r2fd):`    `info = json.loads(r2fd.cmd('iIj'))`    `return info["arch"]``   ``def get_endian(r2fd):`    `info = json.loads(r2fd.cmd('iIj'))`    `return info["endian"]``   ``if __name__ == "__main__":`    `parser = argparse.ArgumentParser(description='Find referencing functions in a program and libraries.')`    `parser.add_argument('-p', '--program', type=str, help='Path to the main program')`    `parser.add_argument('-f', '--filesystem', type=str, help='Path to the file system')`    `parser.add_argument('-s', '--symbols', type=str, help='Target symbols (comma-separated)', default='system,execve,popen')`    `parser.add_argument('-d', '--disassembly', type=int, help='Print disassembly information (0 or 1)', default=0)``   `    `args = parser.parse_args()``   `    `if not args.program or not args.filesystem:`        `parser.print_help()`        `exit()``   `    `main_program = args.program`    `file_system_path = args.filesystem`    `target_symbols = args.symbols.split(',')`    `print_disassembly = bool(args.disassembly)``   `    `r2 = r2pipe.open(main_program)`    `libraries = get_dynamic_libraries(r2, file_system_path)`    `r2.quit()``   `    `referencing_functions = find_referencing_functions_in_libraries(main_program, libraries, target_symbols)``   `    `unique_functions = set((function_name, symbol, filename) for function_name, _, symbol, filename in referencing_functions)``   `    `print("Referencing Functions in Main Program:")``   `    `for function_name, symbol, filename in unique_functions:`        `if filename == main_program:`            `print(f"File: {filename}")`            `print(f"Symbol: {symbol}")`            `print(f"Function: {function_name}")`            `print("------------------------------------------------------------")`    `print("Referencing Functions in Libraries:")`    `for function_name, symbol, filename in unique_functions:`        `if filename != main_program:`            `print(f"File: {filename}")`            `print(f"Symbol: {symbol}")`            `print(f"Function: {function_name}")`            `print("------------------------------------------------------------")``if print_disassembly:`    `for ref_function_name, ref_function_disassembly, _, _ in referencing_functions:`        `print(f"Referenced by: {ref_function_name}")`        `print(f"Disassembly:\n{ref_function_disassembly}")`        `print("------------------------------------------------------------")

3.效果及用法

Beacon Config XOR KEY1

symbolFinder.py [-h] [-p PROGRAM] [-f FILESYSTEM] [-s SYMBOLS] [-d DISASSEMBLY]

python3 symbolFinder.py -p squashfs-root/usr/sbin/uhttpd -f squashfs-root -s strcpy,system

python3 symbolFinder.py -p squashfs-root/usr/sbin/uhttpd -f squashfs-root -s strcpy,system-d 1 > 1.txt

4.总结

希望对兄弟们有一点帮助,有问题或交流什么的可以后台私信。

本文转自 https://mp.weixin.qq.com/s/qiIVPVzgChiRotR1NQC-kQ,如有侵权,请联系删除。

`黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

Nmap扫描实战命令汇总 Nmap实战详解 阅读详情

相关推荐

docker 常用命令大全

Docker 常用命令大全

胖虎儿的博客 38万+

vmware虚拟机使用教程

以下是我总结的虚拟机的一些经验【不一定正确,仅仅用作参考】 1.vmware选择什么版本比较好,越新的版本越好吗? 并不一定要选择最新的版本。可以选择vmware 12 pro ,这个版本好用。 2.使用教程 点击启动虚拟机 下一步下一步就可以 安装vmtools,安装后就可以...

xijieyuan2qi的博客 17万+

我的二进制漏洞挖掘学习路线

漏洞挖掘也分好多方向:浏览器漏挖,虚拟化,iot,车联网,应用安全等。而且也要区分一下平台,Linux,Android,Windows,还有一些其他的系统。在基础知识拿捏以后,Windows下如OD,windbg,x64dbg。IDA,GDB要会并联调。然后需要了解一下漏洞的知识,漏洞利用的知识。可以从复现漏洞,CTF来学习,学习完之后就可以通过审计源码或者反汇编二进制程序来挖掘。然后就是练就行了,多关注一下最新安全消息,安全漏洞。

qq_36918532的博客 4945

Web安全和渗透测试有什么关系?

做渗透测试的一个环节就是测试web安全,需要明白漏洞产生原理,通过信息收集互联网暴露面,进行漏洞扫描,漏洞利用,必要时进行脚本自编写和手工测试,力求挖出目标存在的漏洞并提出整改建议,当然如果技术再精一些,还要学习内网渗透(工作组和域环境),白盒审计,app,小程序渗透那些了......可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。总之,web安全包含于渗透测试,但不是渗透测试的全部。

Python_0011的博客 4864

FirmAE:物联网固件自动化模拟与漏洞挖掘实战指南

固件模拟是物联网安全研究中的关键技术,它通过在虚拟环境中运行嵌入式设备软件,使安全研究人员能够深入分析设备内部逻辑与潜在漏洞。其核心原理是利用QEMU等模拟器构建完整的系统环境,包括CPU架构模拟、网络栈虚拟化和文件系统挂载。这项技术的价值在于能够安全、可控地复现真实设备环境,极大降低了漏洞挖掘与复现的成本和风险。在应用场景上,固件模拟广泛用于漏洞研究、应急响应、产品安全测试以及学术研究。本文以FirmAE这一自动化框架为例,深入解析其如何通过集成解包、架构识别、内核修补与网络配置等步骤,实现固件模拟的‘一

weixin_29189377的博客 450

漏洞挖掘实战:从Web到物联网的攻防策略

漏洞挖掘是网络安全领域的核心技术之一,涉及从Web应用到物联网设备的多种场景。其核心原理是通过自动化工具与手工测试结合,识别系统中的安全弱点。在Web应用中,常见漏洞如SQL注入和XSS可通过工具如Burp Suite和sqlmap进行检测;而物联网设备则需逆向工程和固件分析技术。漏洞挖掘的技术价值在于提前发现潜在风险,避免数据泄露和系统入侵。应用场景包括金融系统、云平台和工控系统等。本文以实战案例展示如何通过组合拳策略高效挖掘高危漏洞,并分享工具链配置和高级武器开发经验。

weixin_42530732的博客 326

快速挖掘设备逻辑洞方法分享

接触iot也快有一年的时间了,一年来也挖掘了大大小小几十个洞,虽然能有些产出但是却逐渐对人工审计感到无趣和疲惫。在此之间我也尝试过通过使用污点分析fuzz等方法去进行自动化漏洞挖掘,但总因为目标不明确而导致挖掘效果不是很好。于是就产生了写一款可以用来辅助跨文件分析危险函数的工具的想法,正好最近在看到时,看到了文章中dcalls这个工具。他的效果可以很好地满足我之前的想法,但是这款工具貌似并没有开源,于是我就自己尝试去实现了一下这个工具。

jingdianjiuchan的博客 403

「分治法」最近点对距离问题

一、问题描述 给定平面S上n个点,找其中的一对点,使得在n个点组成的 所有点对中,该点对间的距离最小。 假设所讨论的点是以标准笛卡儿坐标形式(x, y)给出的。因 此,在两个点Pi =(xi , yi )和Pj =(xj , yj )之间的距离是标准的欧几里德 距离: d = 根号下( x i − x j ) 2 + ( y i − y j )2 二、问题分析 直接用暴力解法很简单,用结构体把每个点的x、y坐标都存下来之后,用一个二重循环即可获得距离的最大值。但是这样做的时间复杂度也达到了O(n的平方)

Laok0413的博客 9657

对目前物联网设备的漏洞挖掘技术的学习记录

漏洞挖掘

weixin_47390133的博客 7772

软件各项会议评审意见模版

读梅老师主编的书,觉得评审意见模板很有参考价值和实用价值,帮梅老师安利一波,顺便记一下笔记。 《系统/子系统规格说明》评审意见模板 20XX年XX月XX日,XXX(主管机关)在XXX(会议地点)主持召开了“《XXX(产品名称)系统规格说明》评审会”。参加会议的有XXX机关,XXX院校,XXX研究所共XX名代表(名单见附件1),会议成立了评审组(名单见附件2),听取了XXX(单位)做的《XXXX报告》。经讨论质询,形成评审意见如下: 系统规格说明对系统的研制目标和范围、工作状态、运行方式以及所要满足的能力需

赵星汉同学的博客 1万+

Manimgl 进阶笔记

目录 一、调整视频输出的纵横比 二、调整预览窗口的尺寸 三、在开发工具中直接调试 一、调整视频输出的纵横比 调整输出视频的纵横比,在日常开发中属于比较基本的需求。要使用 Manimgl 得到期望的分辨率的视频输出需要修改以下几个地方: 第一步:在 custom_config.yml 配置文件中通过 camera_qualities设置视频的输出分辨率。manimlib 框架已经在 default_config.yml 文件中设置了四种视频输出分辨率,default_qualities 参数.

gunnery的专栏 2861

IoT 固件中的 Web 漏洞挖掘:模拟运行、解包与逆向分析

IoT 固件 Web 漏洞挖掘,是指通过对 IoT 设备的固件文件进行解包,提取出其中的 Web 服务器、后端应用程序及相关文件,然后通过模拟运行(仿真)或静态逆向分析的方式,审计其 Web 接口中存在的安全漏洞(如命令注入、认证绕过、信息泄露等)的技术过程。优先寻找无认证接口:在分析时,首先关注那些无需登录即可访问的 CGI、PHP、ASP 页面。这些是最高价值的攻击入口。关注“危险”函数调用:重点审计代码中调用systempopenexecvsprintfstrcpy。

Alfadi联盟 萧瑶的博客 1799

STM32 CAN发送丢包?3个邮箱轮询法实测有效(附代码)

本文深入分析了STM32 CAN总线发送丢包的根本原因,指出其内置CAN控制器的三个发送邮箱是硬件瓶颈。针对高负载场景,提供了实测有效的优化方案,重点介绍了非阻塞的邮箱状态轮询法,该方法通过主动轮询三个邮箱的空闲状态,充分利用硬件资源,显著提升发送稳定性并避免任务阻塞。文中附有可直接使用的示例代码。

weixin_29189381的博客 195

IOT漏洞挖掘学习笔记(一)——堆基础及相关数据结构

1.CTF介绍 线上赛: 答题模式 线下赛: AWD(攻防模式) RealWorld(展示模式) 主要考查漏洞挖掘与利用能力 二进制安全: 栈溢出 栈溢出的防护绕过 堆溢出 堆溢出漏洞 格式化字符串 IOFILE RACE 命令注入 REAL WORLD: IOT漏洞挖掘 浏览器漏洞挖掘 虚拟机逃逸 js解析器 前置知识: 掌握任何一门编程语言 工具使用能力 2.堆溢出 在malloc(分配动态内存) fr

weixin_43137410的博客 1766

深入浅出卡尔曼滤波器算法

深入浅出讲解卡尔曼滤波器的工作原理及其公式推导,讨论卡尔曼滤波器的核心公式所代表的意义及个人的理解。

m0_37835056的博客 1366

infercnv的实操

摘要: 博主在infercnv分析中遇到执行困难,外包服务不可靠(未按要求使用HMM方法)。通过优化策略(逐样本处理、精简细胞至1000个、固定随机种子)解决了运行问题,但HMM功能仍无法实现。最终参考Cell期刊标准设置阈值完成分析,后续将继续更新进展。该案例凸显了生物信息分析中自主优化的重要性。(150字)

xiaoyusang的博客 310

IOT漏洞挖掘初体验-Tenda A15

最近在pwn大手子的带领下逐渐学习物联网安全,想着先复现一个典型漏洞看看。首先需要准备以下工作:1.安装binwalkbinwalk是一把利刃。kali内置了binwalk,如果直接可能会使用的时候报错,原因可能是因为python包环境冲突,解决办法是删除冲突的环境,这里以我的为例:hash -r2.安装sasquatch直接克隆仓库即可我当时报了这个错误:这里参考了。

wlmt666的博客 859

Python爬虫实战:高效爬取中国版权登记数据

本文将详细介绍如何使用Python最新技术栈构建一个高效、稳定的中国版权登记数据爬虫系统。我们将使用Playwright+Asyncio实现无头浏览器自动化,结合Redis分布式任务队列和MongoDB数据存储,打造一个能够应对反爬机制的企业级数据采集方案。文章包含完整代码实现、性能优化技巧以及法律合规建议,帮助开发者快速掌握大规模数据采集的核心技术。本文详细介绍了2024年使用Python最新技术栈构建中国版权登记数据爬虫的完整方案。基于Playwright的无头浏览器自动化。

2201_76125261的博客 1899

从零到一:构建你的IoT安全实验室——路由器漏洞挖掘全流程指南

本文详细介绍了从零开始构建IoT安全实验室的全流程,重点解析路由器漏洞挖掘的核心技术与实践方法。涵盖固件分析、动态调试、漏洞利用等关键环节,提供工具链配置、逆向工程实战和自动化漏洞挖掘体系构建的完整指南,帮助安全研究人员系统掌握路由器安全评估技能。

water的专栏 855

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

假人有限元模型

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

三篇物联网漏洞挖掘综述

基于图的表征:图是一种比树更为抽象复杂的表示形式,图的顶点之间是多对多的关系,并且不具有树结构中明确的父子节点层次划分.因此,基于图的表征形式能够反映代码中更丰富的语法和语义特征,有很好的检测能力.如常用的程序依赖图表示软件程序的控制依赖和数据依赖关系,控制流图(control flow graph,简称CFG)则是由编译器在内部维护的一种程序的抽象表现,代表了程序执行过程中会遍历到的所有路径.目标程序分析提取: 对含有操作系统的固件, 该步骤对提取出的所有程序和文件集合, 进一步提取出待分析的目标程序。

XLYcmy的博客 1808

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

物联网漏洞挖掘

物联网(IoT)漏洞挖掘的攻击面非常广泛,涵盖硬件、固件、网络协议、云端交互、物理接口等多个层面。(如智能灯泡、插座)入手,逐步挑战复杂目标(如工业PLC、汽车ECU)。:通过官网下载或物理提取(如SPI闪存芯片)获取固件,分析文件系统。:设备使用存在漏洞的库(如OpenSSL Heartbleed)。:缓冲区溢出、格式化字符串漏洞(常见于C语言实现的守护进程)。:身份验证绕过(如通过特定HTTP头绕过登录)。:使用过时的SSLv3或弱密码套件(如RC4)。:万能硬件调试工具(支持I2C、SPI等协议)。

远方雪的专栏 1916

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

基于跨架构算法的高效物联网漏洞挖掘系统 物联网漏洞挖掘概述之漏洞挖掘技术

所谓半有效的数据是指对应用程序来说,文件的必要标识部分和大部分数据是有效的,这样应用程序就会认为这是一个有效的数据,但同时该数据的其他部分是无效的,这样应用程序在处理该数据时就有可能发生错误,这种错误能够导致应用程序的崩溃或者触发相应的安全漏洞。(1)手工测试是通过客户端或服务器访问目标服务,手工向目标程序发送特殊的数据,包括有效的和无效的输入,观察目标的状态、对各种输入的反应,根据结果来发现问题的漏洞检测技术。但漏洞一般都有相应的补丁,所以可以通过比较补丁前后的二进制文件,确定漏洞的位置和成因。

XLYcmy的博客 920

体系自适应的物联网漏洞挖掘系统研究背景及意义:物联网漏洞挖掘概述之漏洞挖掘

网络安全已成为人们日益关注的重要问题。据CNCERT/CC2007年网络安全工作报告的统计,近年来漏洞数量呈现明显上升趋势,不仅如此,新漏洞从公布到被利用的时间越来越短,黑客对发布的漏洞信息进行分析研究,往往在极短时间内就能成功利用这些漏洞。除了利用已知漏洞,黑客们也善于挖掘并利用一些尚未公布的漏洞,发起病毒攻击,或出售漏洞资料,满足经济目的。相对于黑客,安全研究者们在漏洞研究方面显得相对被动和滞后。因此,应该加大对漏洞挖掘的研究力度,以便对各类漏洞采取更为主动合理的处理方式。

XLYcmy的博客 712

系统0day安全-IOT设备漏洞挖掘

数字化时代,物联网(IoT)设备已经渗透到我们生活的方方面面,从智能家居到工业自动化,无一不依赖于这些智能设备。本课程从基础出发,涵盖固件获取、解包、仿真,再到漏洞分析与利用,为你打造一条完整的学习路径。这门课程强调动手操作,除了丰富的理论知识外,我们还提供配套的相关资料、课后习题、直播答疑和学习交流群。如果你已经具备一定的Web安全基础,并希望系统学习IoT漏洞挖掘,或者你是一名寻求自我突破的安全从业者,这门课程将是你的理想选择。- 真实的漏洞实操:结合真实案例,完整展示漏洞复现过程,分享挖掘思路。

Ms08067安全实验室 390

基于跨架构算法的高效物联网漏洞挖掘系统 跨架构高效物联网漏洞挖掘算法 数据集构建 上

接着对代码进行词法分析和语法分析,将分析的结果构建成 AST,对语法树节点进行编码作为代码的特征。基于图的表征:图是一种比树更为抽象复杂的表示形式,图的顶点之间是多对多的关系,并且不具有树结构中明确的父子节点层次划分.因此,基于图的表征形式能够反映代码中更丰富的语法和语义特征,有很好的检测能力.如常用的程序依赖图表示软件程序的控制依赖和数据依赖关系,控制流图(control flow graph,简称CFG)则是由编译器在内部维护的一种程序的抽象表现,代表了程序执行过程中会遍历到的所有路径.

XLYcmy的博客 1490
上一篇: Windows客户端漏洞挖掘(红队角度)
下一篇: 程序员接私活最最完整攻略
网络安全大白
博客等级 码龄5年 7307粉丝 698原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值