• pwn调试环境搭建


    应用场景

    不同的pwn题有不同的环境要求,堆题要求更多,patchelf可以满足一定场景的实现,但终究不如在实际对应的环境中搭建。如何快速搭建一个高效节省资源的环境也是一个不小的问题。

    方法

    高效节省资源:一个主要调试环境+多个运行环境 =主机+docker容器

    步骤

    主要调试环境

    gdb+pwntools+pwndbg等等,网上这类教程很多,不细说。
    多加一点:hyperpwn这个插件也挺好用的,支持gdb结果回溯,不需要再在翻滚轮了具体项目地址
    https://github.com/bet4it/hyperpwn

    主要的运行环境

    针对buuctf中涉及ubuntu16、ubuntu18 ubuntu20三种主要环境,采用docker容器的方式搭建相应环境。
    主要命令

    sudo docker pull ubuntu:16.04     								# 拉取16.04的镜像
    sudo docker images 				 								# 列出镜像
    sudo docker rename great_mestorf pwn_ubuntu16					# 重命名镜像
    sudo docker run -it ubuntu:16.04
    sudo docker start [CONTAINER ID]								# 启动镜像
    sudo docker cp 本地文件的路径 container_id:<docker容器内的路径>  	# 向docker传输文件
    sudo docker attach  [CONTAINER ID]								# 进入镜像shell
    apt install gdbserver											# 在镜像shell中下载gdbserver
    apt-get install build-essential									# 在镜像shell中安装一些的运行库
    gdbserver 宿主机IP:2345  二进制文件									# 在镜像shell中启动gdbserver
    sudo docker commit -p 0fa9c9fce605 pwn_ubunt16_ori 				# 拍摄快照
    gdb target remote 容器IP:2345									# 宿主机进行调试
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    运行效果

    docker中运行文件
    在这里插入图片描述
    宿主机调试
    在这里插入图片描述
    当然也可以在相应的docker里面进行调试。

    docker的链接
    百度云
    链接: https://pan.baidu.com/s/1wkRzwgPN_znicbUUNCo1TQ 提取码: hpq4
    含有ubuntu16,有python3.9,gdb11,pwndbg
    CSDN
    https://download.csdn.net/download/weixin_41748164/87024563
    https://download.csdn.net/download/weixin_41748164/87024401
    加载相应的docker
    docker import - new_hangger_server < hangger_server.tar
    备注
    ubuntu18和ubuntu20 里面有gdb、gdbserver、pwndbg均可使用
    ubuntu16的镜像较大就不再上传

    原版的ubuntu16 默认安装的是gdb7,python3.5,这两个在目前的pwndbg均不适用,所以需要自己重新编译python,在用编译好的python编译gdb。在python和gdb的版本都达到要求后,下载pwndbg,不运行setup.sh,直接安装该插件所需要的依赖即可

    sudo docker pull ubuntu:16.04 
    sudo docker run -it --privileged "ubuntu:16.04" /bin/bash
    sudo docker start 9e666c6ef836
    sudo docker attach 9e666c6ef836
    apt-get update
    apt-get install build-essential	 texinfo git vim
    xz -dk gdb-11.2.tar.xz
    xz -dk Python-3.8.15.tar.xz
    tar -xvf Python-3.8.15.tar
    tar -xvf gdb-11.2.tar.xz
    
    #升级python
    sudo apt install -y wget build-essential libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev
    cd Python-3.8.15
    ./configure --prefix=/usr/local/python3
    make & make install
    ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3
    ln -s /usr/local/python3/bin/python3.8 /usr/bin/python 
    ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip3   
    ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip 
    
    # 编译gdb
    apt-get install libgmp-dev libncurses5-dev
    cd gdb-11.2
    mkdir build
    cd build
    ../configure --with-python=/usr/bin/python3 
    make && make install
    
    # 安装pwndbg
    git clone https://github.com/pwndbg/pwndbg.git
    pip install -r requirements.txt
    echo "source /root/pwn/pwndbg/gdbinit.py" > ~/.gdbinit
    
    # 解决编码问题
    vim  /etc/profile
    	export LANG=C.UTF-8 
    source /etc/profile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
  • 相关阅读:
    【owt】owt-client-native-p2p-e2e-test vs2017构建 5 : 禁用MSDK
    MFC创建翻译界面(国际化)
    缓存的放置时间和删除时间
    c++11 多线程支持 (std::async)
    SRS服务器ffmpeg 推流rtmp超时中断
    一、XSS加解密编码解码工具
    P2719 搞笑世界杯 (期望dp
    【JavaSE】String类基本用法和常见操作
    核货宝:服装店收银系统必备的五大功能
    k8s集群中部署服务之Dockerfile文件准备
  • 原文地址:https://blog.csdn.net/weixin_41748164/article/details/127874334