CTF-PWN中常用到的工具及其功能作用
文章目录
工欲善其技必先利其器
0x00 工具清单
PWN用到的工具相对于其他的方向的工具并不是很多,因此个人感觉 它也相对难一些
以下是比赛时常需要用到的工具:
- GDB: Linux调试中必要用到的
- gdb-peda、pwndbg、gef: GDB调试插件
- pwntools:写exp和poc的利器
- libc-databases:可以通过泄露的libc的某个函数地址查出远程系统是用的哪个libc版本
- checksec:可以很方便的知道elf程序的安全性和程序的运行平台
- objdump :可以很快的知道elf程序中的关键信息
- readelf:可以很快的知道elf程序中的关键信息
- ida pro:反汇编工具
- ROPgadget:强大的rop利用工具
- one_gadget:可以快速的寻找libc中的调用exec(‘bin/sh’)的位置
0x10 GDB常用插件安装
peda
git clone https://github.com/longld/peda.git ~/peda
echo "source ~/peda/peda.py" >> ~/.gdbinit
pwndbg
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh
gef
# via the install script
#下载 `gef.sh` 并执行
wget -q -O- https://github.com/hugsy/gef/raw/master/gef.sh | sh
# manually
# 下载 `gef.py`, 并将其 `source` 写入 `.gdbinit`
wget -q -O ~/.gdbinit-gef.py https://github.com/hugsy/gef/raw/master/gef.py
echo source ~/.gdbinit-gef.py >> ~/.gdbinit
0x20 libc-databases
libc_database
- ./add 用来添加libc库
./add /usr/lib/libc-2.21.so
- ./find 用来查找libc版本
$ ./find printf 260
archive-glibc (id libc6_2.19-10ubuntu2_i386)
- ./dump 用来输出libc中的一些函数的偏移
$ ./dump libc6_2.19-0ubuntu6.6_i386
offset___libc_start_main_ret = 0x19a83
offset_system = 0x00040190
offset_dup2 = 0x000db590
offset_recv = 0x000ed2d0
offset_str_bin_sh = 0x160a24
LibcSearcher
一个基于libc_database写的python库
from LibcSearcher import *
#第二个参数,为已泄露的实际地址,或最后12位(比如:d90),int类型
obj = LibcSearcher("fgets", 0X7ff39014bd90)
obj.dump("system") #system 偏移
obj.dump("str_bin_sh") #/bin/sh 偏移
obj.dump("__libc_start_main_ret")
libc database search
一个用来查询libc版本的网站
LibcSearcher
git clone https://github.com/lieanu/LibcSearcher.git
cd LibcSearcher
python setup.py develop
0x30 ida pro
官方下载地址: https://www.hex-rays.com/products/ida/
0x40 pwntools
python2.x:
pip2 install pwntools
python3.x:
pip3 install pwntools
0x50 ROPgadget
查找可存储寄存器的代码
ROPgadget --binary rop --only 'pop|ret' | grep 'eax'
查找字符串
ROPgadget --binary rop --string "/bin/sh"
查找有int 0x80的地址
ROPgadget --binary rop --only 'int'
0x60 one_gadget
sudo apt -y install ruby
sudo gem install one_gadget
0x70 Docker
http://cdusec.happyhacking.top/?post=113
0x100 补充
部分工具可以使用
https://github.com/giantbranch/pwn-env-init.git
来一键下载具体看https://blog.csdn.net/u012763794/article/details/83831875 这位大佬的博客