为什么要在老版本的 Ubuntu 上使用 pwntools 呢?因为在新版系统上,使用的往往是版本较高的 libc.so,其堆的一些特性已经发生变化,在 CTF 比赛中,有可能无法复现某些漏洞的利用方法。而在 Ubuntu 中直接安装 pwntools,可能会出现各种问题。
Ubuntu 16.04.6
1.安装 python 2.7 及其依赖
apt-get install python2.7 python-pip python-dev git libssl-dev libffi-dev build-essential
2.强制升级 pip
# 如果直接运行第二条命令,也会出错,所以最保险的方法是二者都运行
pip install --upgrade pip -i https://pypi.mirrors.ustc.edu.cn/simple
python -m pip install -U --force-reinstall pip -i https://pypi.mirrors.ustc.edu.cn/simple
3.安装 pwntools
pip install pwntools -i https://pypi.mirrors.ustc.edu.cn/simple
备注
常见的报错不外乎是 ssl 库没有安装(步骤1 解决),以及下图所示的 pip 版本过早(步骤2解决),不要使用常规升级 pip,一定要强制升级,这样才能升级成功。
Kali 2020
可直接安装 pwntools(基于 python3),不会报错,但是要注意,python3 对字符串和字节数组的处理,在使用 pwntools 的时候可能需要额外进行编码和解码工作。
pip3 install pwntools -i https://pypi.mirrors.ustc.edu.cn/simple