基于Ubuntu16.04 LTS配置CTF-PWN调试环境(详细)

本文详细介绍了如何在Ubuntu16.04上离线安装Python3.8、pwntools、gdb10.2以及pwndbg,包括解决安装过程中遇到的问题,如修改软链接、处理ImportError等。此外,还涵盖了在amd64系统中运行32位程序的步骤,以及安装gef和peda等其他相关工具,以构建完整的PWN调试环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需预先下载资源

由于Ubuntu16.04 LTS系统中的Python与gdb并不支持pwntools和pwndbg的安装,所以需要离线安装新版本的Python和gdb。

PWN环境配置

1、Ubuntu16.04安装及设置

  • 使用VMware安装 Ubuntu 16(略)
  • 安装vim:sudo apt install vim
  • 安装git:sudo apt install git
  • 系统安装后出现错误的解决办法
    • “System program problem detected”弹窗
      • sudo rm /var/crash/*
      • sudo vim /etc/default/apport,再将enable=1 修改为enable=0
    • ubuntu16更新时报错E: Sub-process returned an error code
      Problem executing
       #  依次执行下列命令进行更新
       sudo apt remove libappstream3  #卸载文件
       sudo apt update #再次更新系统                                                                                                                                                                       
       sudo apt install --reinstall software-center software-center-aptdaemon-plugins 
      
  • 为了方便,我取消了屏保:system setting --> Security & Privacy
    在这里插入图片描述
  • 新建两个文件夹
mkdir /home/redbright/ctfpwn
sudo mkdir /pwnEnv
sudo chmod 777 /pwnEnv

2、离线安装Python3.8

  • 安装python相关依赖项
sudo apt install python python-pip python-dev git libssl-dev libffi-dev build-essential
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget
  • 下载源码:wget https://www.python.org/ftp/python/3.8.16/Python-3.8.16.tar.xz
  • pip换国内源:为了保证root用户和redbright用户均能使用国内pip源,我在两个用户的家目录下均新建了.pip文件并配置了pip.conf文件。
    在这里插入图片描述
  • 编译安装过程及命令
tar -xvf Python-3.8.16.tar.xz
cd Python-3.8.16 
./configure  # 生成makefile文件
./configure --enable-optimizations  # 根据前一步运行完成后的提示执行该命令
sudo make
sudo make install
  • 修改软链接
sudo rm /usr/bin/python
sudo rm /usr/bin/python3
sudo rm /usr/bin/pip
ln -s /usr/local/bin/python3.8 /usr/bin/python3
ln -s /usr/local/bin/python3.8 /usr/bin/python
ln -s /usr/local/bin/pip3.8 /usr/bin/pip3
ln -s /usr/local/bin/pip3.8 /usr/bin/pip
  • ModuleNotFoundError: No module named ‘lsb_release‘解决办法:
    • sudo vim /usr/bin/lsb_release
    • 将首行#!/usr/bin/python3 -Es,修改为#!/usr/bin/python3.5m -Es

3、安装pwntools

  • pip install pwntools
  • 更新pip:/usr/local/bin/python3.8 -m pip install --upgrade pip
    pwntoos测试

4、离线安装gdb10.2

  • 编译安装过程及命令
tar -xvf gdb-10.2.tar.xz 
cd gdb-10.2  
./configure  # 生成makefile文件
sudo make
sudo make install
gdb -v  # 查看是否安装成功
  • 出现Makefile:490: recipe for target ‘gdb.info’ failed错误的解决办法
    • sudo apt install texinfo

5、pwngdb+pwndbg联合使用

先在根目录下使用指令mkdir pwnEnv新建个文件夹,然后cd pwnEnv进入该目录,在pwnEnv目录下使用如下指令:

  • 安装Pwngdb
git clone https://github.com/scwuaptx/Pwngdb.git 
  • 安装pwndbg
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh
  • 编辑.gdbinit文件
    gef和peda的安装命令具体见8、其他相关安装。为了保证root用户和redbright用户均能使用pwndbg,我在两个用户的家目录下均配置了.gdbinit文件。
sudo cp /pwnEnv/Pwngdb/.gdbinit /root/.gdbinit
sudo vim /root/.gdbinit
sudo cp /root/.gdbinit /home/redbright/.gdbinit

pwndbg+pwngdb联合使用

  • 启动GDB可能出现错误的解决办法
    • ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the ‘ssl’ module is compiled with OpenSSL 1.0.2g
      • pip install --upgrade --force-reinstall 'requests==2.6.0' urllib3
    • ModuleNotFoundError: No module named ‘_bz2’
      • 下载文件:_bz2.cpython-38-x86_64-linux-gnu.so
      • 再依次执行下列命令:
sudo cp _bz2.cpython-38-x86_64-linux-gnu.so /usr/local/lib/python3.8/lib-dynload
cd /usr/local/lib/python3.8/lib-dynload
sudo chmod 777 _bz2.cpython-38-x86_64-linux-gnu.so
ls -al /usr/local/lib/python3.8/lib-dynload

解决_bz2错误

6、PWN的系统环境情况

个人配置的pwn调试环境参数具体如下:
PWN之系统环境

7、amd64系统中运行32位程序

默认情况下,Ubuntu amd64是不能运行32位程序的,要想在amd64环境中运行32位程序,我们需要安装一些支撑库文件。

sudo apt install libc6:i386
sudo apt install lib32stdc++6
sudo apt install lib32z1

gdb的使用
至此,我完成了基于Ubuntu16.04 LTS的PWN调试环境的配置。

8、其他相关安装

  • 安装gef和peda
git clone https://github.com/longld/peda.git
git clone https://github.com/hugsy/gef.git
# 在.gdbinit 文件添加下列两行
#source /pwnEnv/peda/peda.py
#source /pwnEnv/gef/gef.py 
  • 安装gdb-multiarch:sudo apt install gdb-multiarch
  • 安装patchelf(用来修改elf格式的动态库和可执行程序,可以修改动态链接库的库名字及链接库的PATH):sudo apt install patchelf
  • 安装ropper(用于显示不同文件格式的二进制文件信息)
git clone https://github.com/sashs/ropper.git
cd roppper
chmod +x setup.py
python setup.py install
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值