最近遇到很多人想玩CTF,咨询环境问题。为了更好地将研究重心放在技术本身,这里简单整理一下个人的Pwn环境的搭建过程,仅供参考。
因为是Pwn环境,涉及到Windows平台的比较少,所以一般使用Linux或者MacOS。我个人是一套Linux的虚拟环境搭配MacOS的物理环境,基本能适应所有的Pwn环境要求。
物理环境:MBP 2015
虚拟环境:Ubuntu 18.04
需要注意,Linux的版本太高很多插件容易出问题,所以不建议使用最新版本的Linux系统,最稳定的不是太老旧的就可以。此外,环境因人而异,没有模板,不是固定的,按需分配。
以上各软件根据官方文档自行安装即可。
涉及到的各种软件的安装,均以Ubuntu平台为例
pwntools
一个ctf框架和漏洞利用开发库,用python开发,必备神器,作用不多解释。
安装方法:
个人使用的是python2版本,需要注意一下。pwntools现在支持python3了,这里给出GitHub地址,有需要的可以参考其readme进行安装python3的pwntools。
支持python3的pwntools
安装完成后,打开python测试, 执行from pwn import *
不会报错即可。
(备注:在mac平台下不要使用pip安装,你会怀疑人生的,使用homebrew安装)
gdb
动态调试软件,必备。
安装方法:
```
apt-get install gdb
peda/pwngdb/gef
这是常见的gdb的三个插件,配合gdb使用可以提升调试效率。
安装pwndbg:
安装peda:
安装gef:
因为在同一时刻只能使用一种插件,而且在解决不同类型的题目时使用不同的插件,因此需要配置三种插件的快捷切换。
首先,gdb使用哪种插件是在.gdbinit文件(一般在root目录下)中使用source进行控制的,我们可以在使用插件时注释掉其他的source命令,即可单独使用某一插件。但是每次都编辑该文件实在是麻烦,因此可以使用脚本进行选择。巧合之下,之前看到一位师傅写了个自动选择插件的脚本,很是好用。
现在我们把这个shell脚本放到一个环境变量指向的路径里面,查看一下自己的路径,shell脚本放进去。我放在了/usr/local/sbin目录下,这样就可以执行 gdb.sh,输入对应插件的数字就可以选择使用哪个插件,无需手动更改.gdbinit文件。
实在不会可以参考这位师傅的教程:自动选择gdb插件
32位程序支持
必备,装它。
qemu
这是arm的pwn环境,前期可以不安装,但是终究是逃不过的,建议一步到位。
安装qemu:
安装依赖库:
LibcSearcher
泄露libc库中函数的偏移的库,建议安装,可以节省时间,提高效率。
安装LibcSearcher:
ROPgadget和one_gadget
ROPgadget是用来找gadget的,one_gadget用来寻找libc库中的execve('/bin/sh', NULL, NULL)可以一个gadget就可以getshell,建议安装。
安装ROPgadget:
安装one_gadget:
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)