CTF Pwn 环境搭建


CTF Pwn 环境搭建

操作系统选择

物理环境:VMware ESXi VM 虚拟环境:Ubuntu 18.04

需要注意,Linux的版本太高很多插件容易出问题,所以不建议使用最新版本的Linux系统,最稳定的不是太老旧的就可以。此外,环境因人而异,没有模板,不是固定的,按需分配。

必备一般软件

  1. vim:个人必备,强烈建议学习一点vim的相关知识,可以提高效率,避免安装过多的编辑器或者IDE
  2. git:必备,很多高效的插件都是放在GitHub上的
  3. python:必备,建议python3,毕竟python2已经不支持了
  4. pip:必备,有一些插件需要使用pip进行安装
  5. 一款编辑器:这个看个人需求,vscode、sublime text等,个人喜欢就好。如果有条件的话,可以设置一下配置,当作一个简单的开发IDE使用,毕竟Pwn环境中开发的代码不会很多。

以上各软件根据官方文档自行安装即可。

Pwn常用软件

*涉及到的各种软件的安装,均以Ubuntu平台为例*

  1. pwntools

    一个ctf框架和漏洞利用开发库,用python开发,必备神器,作用不多解释。 安装方法:

$ apt-get install python python-pip python-dev libssl-dev libffi-dev build-essential
$ pip install -U setuptools
$ pip install --upgrade pip
$ pip install --upgrade pwntools

个人使用的是python2版本,需要注意一下。pwntools现在支持python3了,这里给出GitHub地址,有需要的可以参考其readme进行安装python3的pwntools。 支持python3的pwntools

安装完成后,打开python测试, 执行from pwn import *不会报错即可。 (备注:在mac平台下不要使用pip安装,你会怀疑人生的,使用homebrew安装)

  1. gdb

    动态调试软件,必备。 安装方法: ``` apt-get install gdb

  2. peda/pwngdb/gef

    这是常见的gdb的三个插件,配合gdb使用可以提升调试效率。

    # 安装pwndbg:
    
    git clone https://github.com/pwndbg/pwndbg
    cd pwndbg
    ./setup.sh
    
    # 安装peda:
    
    git clone https://github.com/longld/peda.git~/peda
    echo "source ~/peda/peda.py" >> ~/.gdbinit
    
    # 安装gef:
    
    wget -q -O- https://github.com/hugsy/gef/raw/master/scripts/gef.sh| sh
    wget -q -O ~/.gdbinit-gef.py https://github.com/hugsy/gef/raw/master/gef.py
    echo source ~/.gdbinit-gef.py >> ~/.gdbinit

因为在同一时刻只能使用一种插件,而且在解决不同类型的题目时使用不同的插件,因此需要配置三种插件的快捷切换。

.gdbinit 中配置:

define init-peda
source ~/peda/peda.py
end
document init-peda
Initializes the PEDA (Python Exploit Development Assistant for GDB) framework
end

define init-pwndbg
source ~/.gdbinit_pwndbg
end
document init-pwndbg
Initializes PwnDBG
end

define init-gef
source ~/.gdbinit-gef.py
end
document init-gef
Initializes GEF (GDB Enhanced Features)
end

/usr/bin 创建每一个插件的相应入口

/usr/bin/gdb-peda

#!/bin/sh
exec gdb -q -ex init-peda "$@"

/usr/bin/gdb-pwndbg

#!/bin/sh
exec gdb -q -ex init-pwndbg "$@"

/usr/bin/gdb-gef

#!/bin/sh
exec gdb -q -ex init-gef "$@"

给予权限

chmod +x /usr/bin/gdb-*
  1. 32位程序支持

    必备,装它。

apt-get install libc6-dev-i386
  1. qemu

这是arm的pwn环境,前期可以不安装,但是终究是逃不过的,建议一步到位。

安装qemu:

sudo apt-get install qemu
sudo apt-get install qemu-system qemu-user-static binfmt-support

安装依赖库:

sudo apt-get install -y gcc-arm-linux-gnueabi
sudo apt-get install qemu libncurses5-dev gcc-arm-linux-gnueabi build-essential gdb-arm-none-eabi synaptic gcc-aarch64-linux-gnu eclipse-cdt git
  1. LibcSearcher

    泄露libc库中函数的偏移的库,建议安装,可以节省时间,提高效率。 安装LibcSearcher:

sudo pip install capstone
git clone https://github.com/lieanu/LibcSearcher.git
cd LibcSearcher
python setup.py develop
  1. ROPgadget和one_gadget

ROPgadget是用来找gadget的,one_gadget用来寻找libc库中的execve('/bin/sh', NULL, NULL)可以一个gadget就可以getshell,建议安装。

安装ROPgadget:

# 先安装Capstone,它是一个轻量级的多平台架构支持的反汇编架构。
sudo apt-get install python-capstone
 
# 下载好ROPgadget解压,并进入文件夹中
python setup.py install

安装one_gadget:

sudo apt install ruby``gem install one_gadget

  1. IDA

静态调试必备,不多解释。这里建议安装52上的版本: 52上的IDA


文章作者: sfc9982
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 sfc9982 !
  目录