type
status
date
slug
summary
tags
category
icon
password
docker版pwn环境
自己配虚拟机嫌麻烦的话,建议直接用大佬做好的docker pwn环境
具体看官方文档下:
使用方法
前提安装docker,具体可以参考docker hub上面教程,写的很详细
然后输入终端输入ctf_name=xxx
此时本机目录会出现一个目录,你可以将文件放在这里,docker会自动同步到容器里面
后面继续使用如此
没学会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
thestar0 • Updated 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
工具环境变量设置(仅参考)
环境变量,方便命令快速输入