搭建PWN学习环境
环境清单
系统环境
- Ubuntu22.04
编写脚本
- pwntools
- ZIO
调试
- IDA PRO
- gdb
- pwndbg
ROP工具
- checksec
- ROPgadget
- one_gadget
- LibcSearcher
- main_arana_offset
IDA PRO(运行于windows)
IDA主要用于反汇编,静态调试,也可以将部分程序以伪代码的形式给出
pwntools(python库)
pwntools是一个ctf框架和漏洞利用开发库
- pwntools用法
- 安装
sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ pwntools
(Tips: pip换国内源)
gdb
gdb常用来调试 C 和 C++ 程序
sudo apt install gdb
pwndbg
gdb的辅助增强,或者可以用peda、gef
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh
(Tips:Ubuntu下git安装配置)
checksec
检查安全性工具,在安装pwntools时会默认安装
ROPgadget
在程序中搜索ROP段的工具,在安装pwntools时会默认安装
one_gadget
用来去查找动态链接库里execve("/bin/sh", rsp+0x70, environ)函数的地址的
sudo apt -y install ruby
sudo gem install one_gadget
LibcSearcher
泄露了Libc中的某一个函数地址后,常常为不知道对方所使用的操作系统及libc的版本而苦恼,常规方法就是挨个把常见的Libc.so从系统里拿出来,与泄露的地址对比一下最后12位
(Tips:可用libc database search(libc.blukat.me)代替)
git clone https://github.com/lieanu/LibcSearcher.git
cd LibcSearcher
sudo python setup.py develop
main_arena_offset
从libc基址中获取main_arena地址的shell脚本,具体参照main_arena_offset
git clone https://github.com/bash-c/main_arena_offset.git
ZIO
zio是一个专门为CTF PWN开发的Python库,基于zio可以方便实现对远程服务器上的服务程序进行数据读写操作。不仅如此,zio甚至还支持对本地程序的数据读写操作。
sudo pip install zio