最近在忙着搞PWN还有二进制的一些东西,看到很多人都在用gdb来搞CTF的题目,那我也不能例外。。。。走起。
说明一下,本文不涉及原理问题,坑只在与安装的过程,因为安装搞了我一天。。。。
首先,是安装这三个插件:
peda:
git clone https://github.com/longld/peda.git ~/peda
echo "source ~/peda/peda.py" >> ~/.gdbinit
gef:
wget -q -O ~/.gdbinit-gef.py https://github.com/hugsy/gef/raw/master/gef.py
echo source ~/.gdbinit-gef.py >> ~/.gdbinit
pwndbg:
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh
用过的都知道,这三个插件没有办法同时运行,所以下载完后,如果想要切换,只能通过修改root下的.gdbinit文件,要解决这个问题可以参考这里,我大致翻译以下:
首先,可以先把下载的pwndbg文件夹重命名为pwndbg-src(可以不做,但是后面直接复制,为了方便,可以将名称改为跟作者一样),运行,这两个语句即可:
mv pwndbg ~/pwndbg-src
echo "source ~/pwndbg-src/gdbinit.py" > ~/.gdbinit_pwndbg
随后将.gdbinit文件清空,将下列命令复制进去:
define init-peda
source ~/peda/peda.py
end
document init-peda
Initializes the PEDA (Python Exploit Development Assistant for GDB) framework
end
define init-pwndbg
source ~/.gdbinit_pwndbg
end
document init-pwndbg
Initializes PwnDBG
end
define init-gef
source ~/.gdbinit-gef.py
end
document init-gef
Initializes GEF (GDB Enhanced Features)
end
然后在/usr/bin目录下建立三个文件,gdb-peda、gdb-pwndbg、gdb-gef
分别写入:
#!/bin/sh
exec gdb -q -ex init-peda "$@"
#!/bin/sh
exec gdb -q -ex init-pwndbg "$@"
#!/bin/sh
exec gdb -q -ex init-gef "$@"
最后给每个文件加上可执行权限,直接输入gdb-peda、gdb-pwndbg、gdb-gef即可运行。
碰到的问题:
pwndbg安装没问题,运行出现问题,pwndbg不运行,只有普通的gdb:
pwndbg打不开,但是peda和gef我试过是可以的。
期间遇到一个类似这个的错误(但我是kali系统):
所以我尝试了更新再下载:
sudo apt-get remove python-pip-whl
sudo apt -f install
sudo apt update && sudo apt dist-upgrade
sudo apt install python3-pip
更新完后,运行pwndbg,少了psutil,下载吧,又遇到了这个错误,个人推测可能跟之前删了python-pip-whl有关:
但是pip3是有的,于是乎,下载pip2吧,但是几乎尝试了所有方法,一律没用
除此之外还尝试过easy-install,直接使用python -m之类的都不行,最后找到了官网
https://pypi.org/project/pip/pypi.org点击installation,进入另外一个页面
运行上述两句命令,成功安装pip2
然后安装psutil包,再次运行,还是报错:
这里要注意,elftools的下载名称是pyelftools,这个搞了我好久。。。pip2/pip3下都是这个名字
然后一切就都OK了。上一张全家福:
参考文献:
- ubuntu 安装 pip3 报错 python3-pip : 依赖: python-pip-whl (= 8.1.1-2ubuntu0.4) 但是 9.0.1-2.3~ubuntu1.(已解决)
- https://medium.com/bugbountywriteup/pwndbg-gef-peda-one-for-all-and-all-for-one-714d71bf36b8