Pwntools 的详细介绍、安装指南、配置说明
Pwntools:Python 开源安全工具箱
一、Pwntools 简介
Pwntools 是一个由 Security researcher 开发的 高效 Python 工具库,专为密码学研究、漏洞利用、协议分析和逆向工程设计。它集成了数百个底层工具的功能,提供统一的 Python API 接口,广泛用于 CTF竞赛、渗透测试和安全开发。其核心优势包括:
- 模块化设计:支持密码学、网络协议、shellcode生成等全栈操作
- 跨平台支持:兼容 Linux/macOS/Windows 系统
- 自动补丁生成:简化漏洞利用流程
- 社区驱动:持续更新漏洞利用模块和密码学算法
二、安装指南
1. 系统要求
| 操作系统 | 版本要求 | 依赖库 |
|---|---|---|
| Linux | Ubuntu 20.04+/Debian 11+ | Python3、pip、libssl-dev |
| Windows | 10/11 (64位) | Python3、pip、Visual C++ Redistributable |
| macOS | 10.15+ | Python3、pip、Xcode Command Line Tools |
2. 安装步骤
Linux/macOS
# 使用 pip 安装最新稳定版
pip install pwntools# 验证安装
python3 -c "import pwn; print(pwn.__version__)"
Windows
# 下载预编译 Python 环境
https://www.python.org/downloads/# 安装依赖库
pip install pwntools
三、配置说明
1. 环境配置
使用虚拟环境(推荐)
# 创建虚拟环境
python3 -m venv pwn_env# 激活虚拟环境
source pwn_env/bin/activate# 安装 Pwntools
pip install pwntools
全局安装(Linux/macOS)
sudo pip3 install pwntools
2. 配置文件
创建 ~/.pwnrc 文件(Linux/macOS)或 %APPDATA%\pwnrc 文件(Windows),设置常用参数:
# 示例配置:默认输出格式
setwarnings(0)
setlog(2) # 启用调试日志
四、基本使用示例
1. 密码学工具
MD5 哈希破解(字典攻击)
from pwn import *# 加载字典文件
password = "password123"
hash_value = hashlib.md5(password.encode()).hexdigest()# 使用 Aircrack-ng 样式的破解工具
cracker = BruteForceMD5()
cracker.add_words_from_file("dictionary.txt")if crackercracked(cracker, hash_value):print(f"Found password: {password}")
else:print("Password not found")
2. 漏洞利用
栈溢出漏洞利用(ROP链构造)
from pwn import *# 设置进程上下文
context(arch='amd64', os='linux')# 构造 ROP 链
rop = ROP(elf)
rop.find_gadget(['pop rdi', 'ret'])# 计算偏移量
offset = 40
payload = b'a' * offset + rop.chain(rop.read(0x601000, 8), rop.exit())# 注入并执行
io = process('./vulnerable_program')
io.send(payload)
io.interactive()
3. 网络协议分析
HTTP 请求伪造
from pwn import *# 构造 HTTP 请求
request = ("POST /login HTTP/1.1\r\n""Host: example.com\r\n""Content-Length: 28\r\n""Content-Type: application/x-www-form-urlencoded\r\n""username=admin\r\n""password=secret\r\n""\r\n"
)# 发送请求并接收响应
io = socket.tcpconnect('example.com', 80)
io.send(request.encode())
response = io.recv(1024)
print(response.decode())
五、高级功能使用
1. 反汇编与调试
使用 Unicorn 引擎动态分析
from pwn import *# 初始化 Unicorn 引擎
mu = Unicorn()
mu.load(elf.object)# 设置断点
mu.hook(0x400500, lambda regs: print("Breakpoint hit!"))# 执行代码
mu.emulate(0x400500)
2. 协议解析
SMB 协议解析器
from pwn import *# 构造 SMB 协议数据包
smb = SMB()
smb.add_header('Command', 'NEGOTIATE')
smb.add_header('Version', 'NT LM 0.12')# 发送请求到 Samba 服务器
io = socket.tcpconnect('smb-server', 445)
io.send(smb.pack())
3. 自动化测试
使用 pwnlib 运行模糊测试
from pwn import *# 定义模糊测试参数
targets = [('input.txt', 0x8000),('another_input.txt', 0x10000)
]# 执行模糊测试
fuzzer = Fuzzer(targets)
fuzzer.start()
六、典型应用场景
案例:利用缓冲区溢出漏洞获取Shell
-
分析目标程序:
gdb ./vulnerable_program -q
(gdb) disas main
-
构造 Exploit:
from pwn import *# 计算 EIP 偏移量
offset = 32# 构造 ROP 链(sys.exit)
rop = ROP(elf)
rop.find_gadget(['pop rdi', 'call', 'exit'])# 构造 Payload
payload = b'a' * offset + rop.chain(rop.read(0x601000, 8), rop.exit())# 注入并执行
io = process('./vulnerable_program')
io.send(payload)
io.interactive()
https://github.com/pwntools/pwntools
https://github.com/pwntools/ctf-challenges
https://discord.gg/pwntools
总结:
Pwntools 是安全研究人员和开发者手中的高效工具库,无论是密码学研究、漏洞利用还是协议分析,都能显著提升工作效率。建议从基础模块入手,逐步掌握 ROP 构造、动态分析和协议解析等高级功能。在实际使用中,结合 Wireshark、Frida 等工具进行多维度分析,将极大增强攻击面覆盖能力。
相关文章:
Pwntools 的详细介绍、安装指南、配置说明
Pwntools:Python 开源安全工具箱 一、Pwntools 简介 Pwntools 是一个由 Security researcher 开发的 高效 Python 工具库,专为密码学研究、漏洞利用、协议分析和逆向工程设计。它集成了数百个底层工具的功能,提供统一的 Python API 接口&am…...
PLC(电力载波通信)网络机制介绍
1. 概述 1.1 什么是PLC 电力载波通讯即PLC,是英文Power line Carrier的简称。 电力载波是电力系统特有的通信方式,电力载波通讯是指利用现有电力线,通过载波方式将模拟或数字信号进行高速传输的技术。最大特点是不需要重新架设网络…...
Qt监控系统远程回放/录像文件远程下载/录像文件打上水印/批量多线程极速下载
一、前言说明 在做这个功能的时候,着实费了点心思,好在之前做ffmpeg加密解密的时候,已经打通了极速加密保存文件,主要就是之前的类中新增了进度提示信号,比如当前已经处理到哪个position位置,发个信号出来…...
自学微信小程序的第八天
DAY8 1、使用动画API即可完成动画效果的制作,先通过wx.createAnimation()方法获取Animation实例,然后调用Animation实例的方法实现动画效果。 表40:wx.createAnimation()方法的常用选项 选项 类型 说明 duration number 动画持续时间,单位为毫秒,默认值为400毫秒 timing…...
【java】@Transactional导致@DS注解切换数据源失效
最近业务中出现了多商户多租户的逻辑,所以需要分库,项目框架使用了mybatisplus所以我们自然而然的选择了同是baomidou开发的dynamic.datasource来实现多数据源的切换。在使用初期程序运行都很好,但之后发现在调用com.baomidou.mybatisplus.ex…...
003 SpringBoot集成Kafka操作
4.SpringBoot集成Kafka 文章目录 4.SpringBoot集成Kafka1.入门示例2.yml完整配置3.关键配置注释说明1. 生产者优化参数2. 消费者可靠性配置3. 监听器高级特性4. 安全认证配置 4.配置验证方法5.不同场景配置模板场景1:高吞吐日志收集场景2:金融级事务消息…...
Android SystemUI开发(一)
frameworks/base/packages/SystemUI/src/com/android/systemui/SystemUI.java frameworks/base/packages/SystemUI/src/com/android/systemui/SystemUIService.java 关键文件 SystemUI 关键服务 简介 Dependency.class:处理系统依赖关系,提供资源或服…...
C#贪心算法
贪心算法:生活与代码中的 “最优选择大师” 在生活里,我们常常面临各种选择,都希望能做出最有利的决策。比如在超市大促销时,面对琳琅满目的商品,你总想用有限的预算买到价值最高的东西。贪心算法,就像是一…...
Vue程序下载
Vue是一个基于JavaScript(JS)实现的框架,想要使用它,就得先拿到Vue的js文件 Vue官网 Vue2:Vue.js Vue3:Vue.js - 渐进式 JavaScript 框架 | Vue.js 下载并安装vue.js 第一步:打开Vue2官网&a…...
【UCB CS 61B SP24】Lecture 17 - Data Structures 3: B-Trees学习笔记
本文以 2-3-4 树详细讲解了 B 树的概念,逐步分析其操作,并用 Java 实现了标准的 B 树。 1. 2-3 & 2-3-4 Trees 上一节课中讲到的二叉搜索树当数据是随机顺序插入的时候能够使得树变得比较茂密,如下图右侧所示,时间复杂度也就…...
机器学习决策树
一、香农公式 熵: 信息增益: 信息增益信息熵-条件熵 前者是初始信息熵大小,后者是因为条件加入后带来的确定性增加 信息增益表示得知特征X的信息而使得类Y的信息的不确定性减少的程度 信息增益越大说明影响越大 二、代码 ""&…...
Spring Boot + MyBatis 实现 RESTful API 的完整流程
后端开发:Spring Boot 快速开发实战 引言 在现代后端开发中,Spring Boot 因其轻量级、快速开发的特性而备受开发者青睐。本文将带你从零开始,使用 Spring Boot MyBatis 实现一个完整的 RESTful API,并深入探讨如何优雅地处理异…...
通过 ANSYS Discovery 进行 CFD 分析,增强工程设计
概括 工程师使用计算流体动力学 (CFD) 分析来研究和优化各种应用中的流体流动和传热分析。ANSYS Discovery 是一个用户友好的软件平台,使工程师能够轻松设置和解决 CFD 模型,并能够通知设计修改 在这篇博文中,我们将重点介绍在 Ansys Disc…...
家用可燃气体探测器——家庭燃气安全的坚实防线
随着社会的发展和变迁,天然气为我们的生活带来了诸多便利,无论是烹饪美食,还是温暖取暖,都离不开它的支持。然而,燃气安全隐患如影随形,一旦发生泄漏,可能引发爆炸、火灾等严重事故,…...
ListControl双击实现可编辑
为Edit Control控件添加丢失输入焦点事件,可见设为false 为List Control控件添加双击事件 控件和成员变量之间交换数据 CListCtrl ListPrint1; //列表输出 CEdit...
ave-form.vue 组件中 如何将产品名称发送给后端 ?
如何将产品名称发送给后端。 在这段代码中,产品名称(productName)的处理和发送主要发生在 save() 方法中。让我逐步分析: 产品ID的选择: <w-form-selectv-model"form.productId"label"涉及产品&q…...
DeepSeek行业应用实践报告-智灵动力【112页PPT全】
DeepSeek(深度搜索)近期引发广泛关注并成为众多企业/开发者争相接入的现象,主要源于其在技术突破、市场需求适配性及生态建设等方面的综合优势。以下是关键原因分析: 一、技术核心优势 开源与低成本 DeepSeek基于开源架构…...
【Markdown 语法简洁讲解】
Markdown 语法简洁语法讲解 什么是 Markdown1. 标题2. 列表3.文本样式4. 链接与图片5. 代码6. 表格7. 分割线8. 流程图9. 数学公式10. 快捷键11. 字体、字号与颜色 什么是 Markdown Markdown 是一种轻量级标记语言,通过简单的符号实现排版格式化,专注于…...
250301-OpenWebUI配置DeepSeek-火山方舟+硅基流动+联网搜索+推理显示
A. 最终效果 B. 火山方舟配置(一定要点击添加) C. 硅基流动配置(最好要点击添加,否则会自动弹出所有模型) D. 联网搜索配置 E. 推理过程显示 默认是没有下面的推理过程的显示的 设置步骤: 在Functions函…...
【3天快速入门WPF】12-MVVM
目录 1. 什么是MVVM2. 实现简单MVVM2.1. Part 12.2. Part 21. 什么是MVVM MVVM 是 Model-View-ViewModel 的缩写,是一种用于构建用户界面的设计模式,是一种简化用户界面的事件驱动编程方式。 MVVM 的目标是实现用户界面和业务逻辑之间的彻底分离,以便更好地管理和维护应用…...
【Gartner认证实践框架】:AI Agent客服上线前必须完成的12项合规性验证清单(含GDPR/等保2.0/金融信创适配)
更多请点击: https://intelliparadigm.com 第一章:AI Agent客服的合规性验证战略定位 在金融、医疗、电信等强监管行业,AI Agent客服系统不仅需满足功能与体验目标,更须将合规性嵌入其设计、开发与运营全生命周期。合规性验证不是…...
Burp Suite渗透测试工作流:从环境搭建到报告生成
1. 这不是“学个工具”,而是一套可复用的渗透工作流很多人点开“Burp Suite 入门”类教程,心里想的是:“装个插件、抓个包、改个参数,不就完事了?”——结果三天后连 repeater 怎么发 POST 请求都得翻笔记。我带过二十…...
当IP矩阵遇上GEO,中小企业如何实现“双轮驱动”?
流量入口正在从搜索框向对话栏迁徙,你的品牌是“被看见”还是“被信任”?一、一个正在发生的营销范式革命2026年的一个真实场景:当潜在客户向豆包或千问提问“哪家公司的XX服务比较好”时,AI给出的推荐列表里,你的品牌…...
Linux服务器TCP连接数远超65535:从协议原理到高并发调优
1. 项目概述:一个流传甚广的“常识”误区“Linux服务器的TCP连接数上限是65535。” 这句话,我相信很多运维工程师、后端开发,甚至是一些面试官都曾说过或听过。它像一条技术领域的“都市传说”,在无数技术讨论、博客文章甚至面试题…...
5大核心功能+3个实战技巧:ESP32原生USB开发的全面指南
5大核心功能3个实战技巧:ESP32原生USB开发的全面指南 【免费下载链接】EspTinyUSB ESP32S2 native USB library. Implemented few common classes, like MIDI, CDC, HID or DFU (update). 项目地址: https://gitcode.com/gh_mirrors/es/EspTinyUSB 想让你的E…...
ViGEmBus虚拟手柄驱动深度解析与实战指南
ViGEmBus虚拟手柄驱动深度解析与实战指南 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 你是否曾经遇到过这样的困境:手头有一款独特的游戏控制…...
3步解锁GTA V无限可能:ScriptHookV脚本注入核心技术深度解析
3步解锁GTA V无限可能:ScriptHookV脚本注入核心技术深度解析 【免费下载链接】ScriptHookV An open source hook into GTAV for loading offline mods 项目地址: https://gitcode.com/gh_mirrors/sc/ScriptHookV 想象一下,你正在玩《侠盗猎车手V》…...
奥哲重构电建新范式!AI赋能电力建设全场景智能化升级
在电力建设行业,数字化转型已步入深水区。过去十年,企业完成了从合同、物资到安全、质量等核心业务的大规模系统化,实现了业务流程线上化以及数据留痕可回溯。然而当AI浪潮来临,企业开始关注更深层的问题:系统能不能理…...
VideoDownloadHelper:打破网页视频下载壁垒的智能解决方案
VideoDownloadHelper:打破网页视频下载壁垒的智能解决方案 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾遇到过这样的困…...
三步轻松搞定B站视频下载:跨平台免费工具BilibiliDown完整指南
三步轻松搞定B站视频下载:跨平台免费工具BilibiliDown完整指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_m…...
