4、Python3环境:Python3、pip、pwntools 库的安装与验证
做二进制漏洞利用,Python3 是绕不开的工具。我见过不少新手在环境配置上卡一整天,其实没必要。说白了,这步就是装个解释器、装个包管理器、再装个核心库。十分钟搞定的事,别搞复杂了。
4.1 为什么非要用 Python3?
你可能想问:Python2 不行吗?嗯,这里要注意。Python2 在 2020 年就停止维护了。pwntools 的最新版本也全面转向 Python3。我在项目中遇到过用 Python2 跑老脚本,结果一堆兼容性报错,最后全重写了。你想想看,何必给自己挖坑?
我个人习惯是直接装 Python3.8 以上版本。太老的版本有些新特性不支持,太新的版本(比如 3.12)某些库可能还没适配。3.8 到 3.10 是最稳的区间。
4.2 安装 Python3 和 pip
不同系统安装方式不一样。我列个表,你对着自己的系统来就行。
| 操作系统 | 安装命令 / 方式 | 备注 |
|---|---|---|
| Ubuntu / Debian | sudo apt update && sudo apt install python3 python3-pip -y |
自带 Python3,但 pip 可能需要单独装 |
| Kali Linux | sudo apt update && sudo apt install python3 python3-pip -y |
Kali 默认已装,但建议更新到最新 |
| CentOS / RHEL | sudo yum install python3 python3-pip -y |
可能需要先启用 EPEL 源 |
| macOS | brew install python3 |
Homebrew 会自动安装 pip3 |
| Windows | 从 python.org 下载安装包 | 安装时记得勾选「Add Python to PATH」 |
python3 --version 和 pip3 --version。如果 pip3 找不到,试试 python3 -m pip --version。我曾经在 Windows 上遇到过 PATH 没配好,折腾了半小时才发现是安装时忘了勾选那个复选框。
4.3 安装 pwntools
pwntools 是 CTF 和漏洞利用的瑞士军刀。它封装了网络交互、汇编、反汇编、ROP 链构造等一堆功能。我个人觉得,没有 pwntools 的二进制利用就像没有锤子的木匠——也能干活,但效率差太多。
安装命令很简单:
pip3 install pwntools
如果你在 Linux 或 macOS 上遇到权限问题,加个 --user 参数:
pip3 install --user pwntools
--user 或者建个虚拟环境,安全得多。
如果你想用虚拟环境(我个人强烈推荐),可以这样:
python3 -m venv pwn_env
source pwn_env/bin/activate # Linux/macOS
# 或者 pwn_env\Scripts\activate # Windows
pip3 install pwntools
虚拟环境的好处是隔离。你在这个环境里装什么都不会影响系统。我平时每个项目都建一个独立的虚拟环境,避免依赖冲突。
4.4 验证安装是否成功
装完了,怎么知道能不能用?写个简单脚本测一下。
创建一个 test_pwn.py 文件:
from pwn import *
# 检查版本
print(f"pwntools 版本: {__version__}")
# 测试汇编功能
code = asm('xor eax, eax')
print(f"xor eax, eax 的机器码: {code.hex()}")
# 测试反汇编功能
disassembled = disasm(b'\x90')
print(f"0x90 反汇编结果: {disassembled}")
# 测试连接功能(连接一个测试服务器)
try:
r = remote('example.com', 80, timeout=5)
r.send(b'GET / HTTP/1.0\r\n\r\n')
resp = r.recvline()
print(f"网络连接测试通过,收到响应: {resp[:50]}")
r.close()
except Exception as e:
print(f"网络连接测试跳过(正常,因为 example.com 可能不可达): {e}")
print("所有测试完成!")
运行它:
python3 test_pwn.py
如果输出类似下面这样,说明环境配好了:
pwntools 版本: 4.12.0
xor eax, eax 的机器码: 31c0
0x90 反汇编结果: 0: 90 nop
网络连接测试跳过(正常,因为 example.com 可能不可达): ...
所有测试完成!
看到版本号和汇编结果了吗?那就对了。网络连接那步可能会报错,因为 example.com 不一定能连上,这不影响——核心功能正常就行。
4.5 常见问题与避坑
我整理了几个我踩过的坑,你遇到了直接对照着看:
- pip3 安装超时:国内网络问题。加个国内镜像源:
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pwntools - ImportError: No module named 'pwn':说明没装成功。检查一下是不是用了
pip而不是pip3,或者当前虚拟环境没激活。 - asm() 报错:缺少 binutils。Ubuntu 上装
sudo apt install binutils,macOS 上装brew install binutils。 - Python 版本冲突:系统同时有 Python2 和 Python3。用
python3和pip3明确指定版本,别偷懒用python和pip。
apt install libc6-dev 就好了。所以如果你在精简系统上装,记得把基础开发包也装上。
4.6 环境验证清单
最后,给你一个检查清单。每完成一项打个勾:
- ☐
python3 --version输出 3.8 以上 - ☐
pip3 --version正常显示版本 - ☐
pip3 install pwntools成功安装 - ☐ 测试脚本能正常运行,输出汇编和反汇编结果
这四步走完,你的 Python3 环境就齐活了。下一章我们开始用 pwntools 写第一个漏洞利用脚本。嗯,到时候你会觉得,前面这些配置工作都是值得的。
咨询更多资料,