作为一个pwn手,一个自己的环境是少不了的,这个博客记录一下环境的搭建过程给需要的同学

前置准备

pwn的环境可以用 vmware 创建一个虚拟机去承载,也可以用 WSL2 去承载,WSL相对方便一些但是有时候可能会出一些问题,vmware 虚拟机全面一些但是相比 wsl 总显得有些笨重(我也不知道为啥会这么觉得

WSL安装并升级到WSL2

详情请参照此处 https://docs.microsoft.com/zh-cn/windows/wsl/install-win10
PS: 先开启wsl功能即可,先不安装具体的linux分发

WSL管理工具LxRunOffline下载以及手动安装WSL

首先从这儿下载我们需要的LxRunOffline工具 https://github.com/DDoSolitary/LxRunOffline/releases
有了这个工具我们就可以在任何我们想的地方安装WSL并且可以很方便的去管理他们

其次,我们需要手动下载需要安装的Linux分发的包 https://docs.microsoft.com/zh-cn/windows/wsl/install-manual

下载下来以后就可以参照这篇文章 https://sspai.com/post/61634 进行 linux 子系统的安装啦
PS:文章中的方法没验证过,当时我用的那个文章找不到了,随便找了一个,有问题记得反馈

其他

linux安装好后便可以使用了,可以在 cmd 或者 Windows Terminal 中输入 WSL 启动(只安装了一个 wsl linux 的情况下,其他的自行百度解决)
也可以在 vs code 中使用,vs code 中有对应的 wsl 插件,开启 wsl 功能后进入 vs code 会自动提示安装,安装好后便可以在 vs code 中连接 wsl linux 进行使用,体验行对可以好一些

VMware workstation pro 发布16版本了

upl-image-preview url=

运行Windows DirectX11游戏和应用程序
使用vctl进行运行、生成、推送或拉取OCI容器
支持在桌面上部署K8S环境
新增无障碍模式

fusion 12
新增VM规格,32vCPU、128G内存,8GVRAM
支持vSphere7本地和远程连接
优化VM操作性和文件传输能力
在隔离的沙盒中运行vGPU渲染引擎
支持暗黑模式
支持Windows Hpyer-V
支持最新版Windows 10和Linux最新版本(发行版本)
集成Linux Vulkan 渲染引擎

官网下载地址

https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html

虚拟机

虚拟机推荐使用ubuntu16.04或者ubuntu14,比赛时用的基本也就是这两个版本的系统,用起来相对方便一些

虚拟机安装

走默认 VMware 的默认安装,设置好账户名密码主机名后坐等完成即可

pwn环境搭建

好了,到了这儿就默认大家已经有一个可以使用的 linux 系统的,接下来我们在这个系统上安装我们需要的各种东西

  • pwntools
    pwntools是一个CTF框架和漏洞利用开发库,用Python开发,旨在让使用者简单快速的编写exploit。python环境推荐使用python2, 虽然这玩儿慢慢被淘汰了,但是好多 exp 是用他写的,在你复现的时候可以舒服一些
    1
    2
    3
    4
    $ apt-get update
    $ apt-get install python2.7 python-pip python-dev git libssl-dev libffi-dev build-essential
    $ pip install --upgrade pip
    $ pip install --upgrade pwntools
    1
    2
    3
    4
    $ apt-get update
    $ apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential
    $ python3 -m pip install --upgrade pip
    $ python3 -m pip install --upgrade pwntools
  • LibcSearcher
    这是针对CTF比赛所做的小工具,在泄露了Libc中的某一个函数地址后,常常为不知道对方所使用的操作系统及libc的版本而苦恼,这个工具就是解决这个问题的
    1
    2
    3
    git clone https://github.com/lieanu/LibcSearcher.git
    cd LibcSearcher
    python setup.py develop
  • one_gadget
    one-gadget 是glibc里调用execve(‘/bin/sh’, NULL, NULL)的一段非常有用的gadget。这个工具可以帮我们找到它。
    1
    2
    apt install ruby
    gem install one_gadget
  • GDB 实用插件
    GDB 在我们的学习过程中使用的相当频繁,好多有问题的地方,动态跑一跑就能知道问题在哪儿,针对 GDB 有几款好用的插件,通过更改 ~/.gdbinit 中的信息我们可以来切换他们
    安装:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #peda
    git clone https://github.com/longld/peda.git ~/peda
    echo "source ~/peda/peda.py" >> ~/.gdbinit
    #peda-heap (搭配peda一起使用)
    git clone git://github.com/Mipu94/peda-heap.git ~/peda-heap
    echo "source ~/peda-heap/peda.py" >> ~/.gdbinit

    #gef
    sh -c "$(wget http://gef.blah.cat/sh -O -)"

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

    #pwngdb
    cd ~/
    git clone https://github.com/scwuaptx/Pwngdb.git
    cp ~/Pwngdb/.gdbinit ~/

    PS:有一个就够,一般用 peda 就行
  • IDA Pro
    交互式反汇编器专业版。是目前最棒的一个静态反编译软件,为众多0day世界的成员和ShellCode安全分析人士不可缺少的利器!
    推荐在 windows 下安装、使用,方便一些
    下载地址:
  • gfree-libc(可以没有)
    gfree-libc可以使你获取任意libc版本源码级(.c级别)的调试能力,你只需要gclibc指令。它希望你的gdb使用的是pwndbg插件,因为其他插件可能会出现错误。
    ​你只需要以下几条命令即可获取从2.19到2.29libc版本的源码级调试能力
    1
    2
    3
    4
    git clone git@github.com:dsyzy/gfree-libc.git
    cd gfree-libc
    sudo sh ./install.sh
    build #PS:此命令执行后会下载2.19-2.29所有的glibc源码进行本地编译,时间较久,执行前做好心理准备
    详情参考 这里
  • 32位系统依赖
    sudo apt install libc6-dev-i386
    sudo apt-get install lib32z1

逆向常用工具