二进制漏洞挖掘pwn系列
pwn环境终极指南
00 分钟
2022-8-17
2024-11-11
type
status
date
slug
summary
tags
category
icon
password

docker版pwn环境

自己配虚拟机嫌麻烦的话,建议直接用大佬做好的docker pwn环境
具体看官方文档下:
notion image
notion image

使用方法

💡
前提安装docker,具体可以参考docker hub上面教程,写的很详细
然后输入终端输入ctf_name=xxx
notion image
此时本机目录会出现一个目录,你可以将文件放在这里,docker会自动同步到容器里面
notion image
后面继续使用如此
没学会docker的话退出快捷键ctrl + p + q
exit 停止运行并退出
或者ctrl + p + q 不停止运行退出

虚拟机(wsl)搭建pwn环境

环境初始化配置

我演示的是用的ubuntu20.04,也可以kali安装pwn环境(推荐使用wsl,方便)
💡
首先进行apt和pip换源
参考这篇终极指南

32位环境multilib

如果要在64位linux下运行32位程序,需要装multilib

安装32位的库

 

安装python2和python3

参考这篇

安装pwn常用工具

pwntools

最简单方式打开终端,在终端输入pwn,有帮助提示则安装成功
或者尝试下面更细致的检验安装是否成功
验证安装
打开python命令行输入
from pwn import *
无报错表示成功
然后再验证一下checksec时候可以正常使用
如果报错,有可能是因为某一个依赖没有安装,根据报错提示,安装依赖后就没有报错了

安装gcc和gdb

安装gdb插件

注意gdb插件同时只能使用一个(但pwngdb和pwndbg可以同时存在),切换的时候可以通过注释切换,或者脚本切换
查看根目录是否有.gdbinit文件,没有就vim ~/.gdbinit
填写下面的配置文件,注意source后面的地址与自己工具安装的位置保持一样
这里我将gdb常用的插件都打包好了

使用方法

在 pwndbg 文件夹中git init初始化一下,然后运行./setup.sh安装
下面的命令注意安装路径,自己修改source 后面的path地址
想用peda:echo "source ~/gdbplugns/peda/peda.py" > ~/.gdbinit
想用gef:echo "source ~/gdbplugns/gef/gef.py" > ~/.gdbinit
想用pwndbg:echo "source ~/gdbplugns/pwndbg/gdbinit.py" > ~/.gdbinit
具体可以看我的github仓库
gdbplugns
thestar0Updated Jan 28, 2023
 

安装ROP相关工具

ROPgadget(二进制文件查找工具)

这个如果安装上了pwndbg的话,会默认安装上,如果没有这可以通过源码或者pip安装如下

安装ropper

 

安装libc相关工具

glibc-all-in-one

patchelf

libc-database

安装ruby开发的Pwn神级工具

首先安装ruby以及gem

one_gadget

运行one_gadget命令(验证是否安装成功)
seccomp-tools(用来读取seccomp沙箱规则)

内核环境工具

qemu

源码编译安装 (花费时间长,可以体验最新版本)
安装依赖
包管理器安装 (花费时间少,但安装的是低版本)

堆相关工具

main_arena_offset(用来计算 main_arena 的偏移)

还有dev2ero封装的py_main_arena_offsetpy模块来计算main_arena的偏移

远程调试工具

ida_server

工具环境变量设置(仅参考)

环境变量,方便命令快速输入
上一篇
PwnTools总结
下一篇
花指令详解分析(代码分解)