搭建Ubuntu16.04系统下的Pwn环境及问题解决实践

0.前言

  最近准备再重新搭建一下Pwn环境,之前我的环境是搭建在Kali里面的(版本是2019.1amd64的),安装pwndbg的时候有点问题,所以当时使用的gdb插件是peda,但是感觉没有pwndbg好用,有些提示不太全,而且有些pwndbg提供的小工具也没有。
  最要命的是某一次Vmware Tools自动更新之后突然不能从物理机复制文件了,拖拽文件也不行,剪贴板也不共享了。重装了几次Vmware Tools也没用,十分生气。听说Ubuntu对pwntools的支持是最好的,看到大佬们的pwn环境基本上都是Ubuntu的,所以这次准备搭一个Ubuntu的本地环境。
  搭建过程中出了好多各种问题,搞了好几天,最后很多问题也没解决,但是凑合算是能用了,在此记录一下。

  我对环境的初步想法是这样:

1. Ubuntu系统,版本16.04及以上

  据说Ubuntu对pwntools的支持是最好的,先后尝试了 20.04,18.04,14.04,最后使用的是16.04版本。
  对于 Ubuntu 12.04 到 15.10,必须首先添加 pwntools 某些存储库。而Ubuntu Xenial (16.04) 有大部分架构的官方包,不需要这一步。
  经过尝试,高版本比如 20.04 已经移除了系统自带的Python2,而低版本比如 14.04 自带的Python2版本又太低,对应的pip版本才1点几,还不能往上升,要升级Python版本很麻烦,还得解决一系列问题。所以最后选择了 16.04 版本。

2. 使用Python2安装pwntools,版本2.7.12及以上

  虽然pwntools的维护者不建议使用Python2来进行安装,但是个人觉得Python2写exp真的方便一点,因为有自动类型转换,能够省掉很多时间。然后就是推荐版本最好在2.7.12及以上,老版本的可以不用尝试了,会有各种报错。。。

3. Vmware Tools正常使用

  这也是我重装环境的原因,不能共享剪贴板真的太难受了,特别是打比赛的时候,一键粘贴进环境真的方便,怀疑是我之前的Kali版本太老了。

1. 环境清单

名称版本
Vmware Workstation Pro16.2.2
Ubuntu16.04.7
Python2.7.17
pip20.3.4
Python33.5.2
pip320.3.4
gdb7.11.1

2. 搭建步骤

(1) 安装Vmware和Ubuntu虚拟机

这个正常安装就行了,应该没啥难点。我安装过程中是不断网的,虽然慢一点,但是好多软件就自动装好了。

(2)换源

安装成功之后进入虚拟机,首先进行换源,这一步可选,这样在进行软件安装的时候能稍微快一点,不换也可以,直接进入(3)。换源之前记得备份一下,我这里使用的是阿里的源。

然后自带的vi不太好用,我也懒得升级了,这里直接使用gedit编辑器打开。

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo gedit /etc/apt/sources.list

贴一下清华源:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse

保存退出,然后更新一下。

sudo apt-get update

(3)安装Python以及pip等基础环境

然后我看了一下Python版本,Ubuntu16是原装的有Python2的,没截图,我记得版本好像是2.7.12。低版本的 Ubuntu 的 Python 版本太低了,升级很麻烦。高版本的话已经没有系统自带的 Python2 了。

然后装一下pip以及其他的一些软件。

sudo apt-get install python python-pip python-dev git libssl-dev libffi-dev build-essential

看了一下安装后的pip版本,好像是10点几,由于pip不再支持 Python2,因此必须安装特定版本的pip来安装pwntools。

python2 -m pip install --upgrade pip==20.3.4

安装完成pip之后,看了一下python版本,也自动升级到最新的2.7.17了。

(4)安装pwntools

安装pwntools,这里使用-i参数指定了使用清华的镜像源,能够稍快一些。

python2 -m pip install --upgrade pwntools -i https://pypi.tuna.tsinghua.edu.cn/simple

然后开一个Python的shell,from pwn import *试一下,我这里报错了,看到试因为找不到pathlib2的库,然后再装一下就行了。

python2 -m pip install pathlib2 -i https://pypi.tuna.tsinghua.edu.cn/simple

装完之后测试一下pwntools安装成功了。
在这里插入图片描述

(5)安装pwndbg

gdb调试插件,可选的还有gdb-peda等,可以自行选择,本人比较习惯pwndbg。

git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh

运行安装脚本时可能会报错:

Traceback (most recent call last):
  File "/usr/bin/pip3", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.5/dist-packages/pip/__init__.py", line 11, in main
    from pip._internal.utils.entrypoints import _wrapper
  File "/usr/local/lib/python3.5/dist-packages/pip/_internal/utils/entrypoints.py", line 4, in <module>
    from pip._internal.cli.main import main
  File "/usr/local/lib/python3.5/dist-packages/pip/_internal/cli/main.py", line 57
    sys.stderr.write(f"ERROR: {exc}")
                                   ^
SyntaxError: invalid syntax

解决方法:
不要使用apt安装pip,手动下载安装脚本安装即可。

首先卸载python3的pip。
sudo apt-get remove python3-pip

下载安装脚本并安装
wget https://bootstrap.pypa.io/pip/3.5/get-pip.py
python3 ./get-pip.py

进入gdb显示pwndbg表示安装成功。

(6)安装ROPgadget

这个安装 pwntools 时自带,如果没有的话可以再手动安装。

git clone https://github.com/JonathanSalwan/ROPgadget.git
cd ROPgadget/
sudo -H python3 setup.py install

执行安装脚本后,可以使用命令试一下,我这里报错了,详情如下:

Traceback (most recent call last):
  File "/usr/local/bin/ROPgadget", line 4, in <module>
    __import__('pkg_resources').run_script('ROPGadget==6.7', 'ROPgadget')
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 667, in run_script
    self.require(requires)[0].run_script(script_name, ns)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 1452, in run_script
    raise ResolutionError(
pkg_resources.ResolutionError: Script 'scripts/ROPgadget' not found in metadata at '/usr/local/lib/python3.8/dist-packages/ROPGadget-6.7.dist-info'

这里需要再执行一条命令,将ROPgadget的脚本文件拷贝到Python3的目录下,路径需要根据自己的环境修改一下:

sudo cp -r scripts /usr/local/lib/python3.8/dist-packages/ROPGadget-6.7.dist-info

然后安装成功:

在这里插入图片描述

3.其他问题

部分小问题已在文章中说明,还有一些问题花费时间比较长,另开一篇记录一下:
搭建Ubuntu16.04系统下Pwn环境的几个疑难问题

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值