kali系统安装gdb及其插件Peda|pwndbg|gef
本文最后更新于 2024-08-28,文章内容可能已经过时。
kali中安装gdb及其插件Peda|pwndbg|gef
什么是GDB?
随着网络安全领域的不断发展,Kali Linux 作为一款专为渗透测试和安全研究设计的 Linux 发行版,受到了广大安全爱好者的喜爱。在 Kali Linux 中,GNU 调试器(GDB)是一个强大的工具,用于调试程序,特别是当程序出现崩溃、挂起或其他异常行为时。
GDB(GNU Debugger)
是一个强大的程序调试工具,它允许用户在程序运行时观察、控制和修改程序的状态。在 Kali Linux 中,GDB 通常预装在系统中,用户可以通过命令行轻松访问。
如果你的 Kali Linux 系统中没有预装 GDB,你可以通过以下命令进行安装:
sudo apt-get update
sudo apt-get install gdb
peda
和pwndbg
和gef
是GDB常用的插件可以用来PWN和逆向分析。由于安装过程繁琐和出问题频繁,所以特此在这里记录安装过程中的命令和出现的各种问题,本文不涉及原理问题,只记录安装的过程。
强烈建议:安装之前一定要打一个备份或者虚拟机快照
安装过程中出错的可能性很大。
安装过程
首先先安装GDB,安装好后安装三个插件
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
下载完后发现是空的
(这里的git地址已经失效,需要需要手动下载后替换https://github.com/hugsy/gef/blob/main/gef.py)
pwndbg:
pip install pwntools
sudo apt-get install gdb python3 python3-pip python3-dev git libglib2.0-dev libcairo2-dev
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh
安装过程中报错,按照提示输入安装python虚拟环境:,再次执行./setup.sh安装脚本
apt install python3.12-venv
./setup.sh
由于这三个插件不能同时运行,下载完后,如果想要切换,只能通过修改root下的.gdbinit文件,要解决这个问题可以参考如下的连接:
https://infosecwriteups.com/pwndbg-gef-peda-one-for-all-and-all-for-one-714d71bf36b8
大致翻译以下:
首先,可以先把下载的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
即可分别独立运行。
遇到的问题
安装GBD的时候发现问题。如果你尝试直接进行$ apt install gdb
安装后应该是最新版的gdb 并且后续尝试安装peda后再启动将会出现from six.moves import range
报错
输入gdb后发现如下报错。
2024版的kali的python3是python3.11版本,而peda中的six库支持的是3.11之前的。而gdb13是支持python3.12的。
有趣的一点是,当我们在gdb中查看python版本的时候是3.12.4
(gdb) python import sys; print(sys.version_info)
sys.version_info(major=3, minor=12, micro=4, releaselevel=‘final’, serial=0)
(gdb) python import sys; print(sys.version_info)
/usr/bin/python (真实情况是软连接指向python3.11)
跟进路径发现是一个用于开发和编译与 Python 3.12 版本相关的程序和模块
(gdb) python import sys; print(sys.path)
[‘/home/maptnh/peda/lib/’, ‘/usr/share/gdb/python’]
跟进/home/maptnh/peda/lib/发现存在six.py。
解决方案
1.下载gdb 13
$ sudo apt install gdb
2.下载gdb-peda
$ git clone https://github.com/longld/peda.git ~/peda;echo "source ~/peda/peda.py" >> ~/.gdbinit
3.安装python12替换软连接
$ sudo apt install python3.12
$ sudo ln -sf $(which python3.12) /usr/bin/python
$ sudo ln -sf $(which python3.12) /usr/bin/python3
```python
$ if [[ $(python --version 2>&1) == *"Python 3.12"* ]] && [[ $(python3 --version 2>&1) == *"Python 3.12"* ]]; then
echo "[+] Success"
else
echo "[-] Failure"
fi
输出Success即可
4.替换备份six模块
启动gdb,获取库路径
$ gdb
(gdb) python import sys; print(sys.path)
修改/peda/lib/six.py文件,使他不起作用
$ mv ~/peda/lib/six.py ~/peda/lib/six.py.bak
再次启动gdb,成功将peda插件载入(上面有报错不用管(是正则表达式的警告),有peda就可以了)
在运行 gdb-gef
时遇到了多个 SyntaxWarning
,这些警告是由于正则表达式中的无效转义序列引起的。这些警告不会阻止程序运行,但建议修复以避免潜在问题。
解决方法:
修正正则表达式:
在 /root/peda/peda.py
文件中,您可以查找并修改所有带有无效转义序列的正则表达式。将 \[
、\s
、\d
等修改为原始字符串格式,例如:
p = re.compile(r"(.*)\[(.*)\]") # 使用原始字符串
忽略警告:
- 如果您不想立即修复这些警告,可以选择忽略它们,程序仍然可以正常运行。
如果想不启动时候不显示(忽略)这些错误可以使用如下命令启动
PYTHONWARNINGS="ignore" gdb-peda
放一张安装完成的全家福:
参考:
https://blog.csdn.net/qq_51886509/article/details/141227182
https://blog.csdn.net/weixin_74861133/article/details/132948262
- 感谢你赐予我前进的力量