这三个是常见的gdb插件,学习pwn必备。
安装插件
Waring:安装下列插件请自行选择好目录,并注意配置文件中的目录问题,修改为自己文件所在目录。
安装pwndbg
执行下列命令::
1 2 3
| git clone https://github.com/pwndbg/pwndbg cd pwndbg ./setup.sh
|
测试运行,发现没有报错,正常运行。
(这样安装前提是没有装过插件,如果装过,需要手动修改插件路径,参考后两个插件安装时修改gdbinit文件,.gdbinit一般在当前用户家目录下)
安装peda
执行下列命令(配置gdbinit文件时,新增peda.py目录):
这里需要根据你的文件路径进行修改。
1 2
| git clone https://github.com/longld/peda.git echo "source /root/Tools/peda/peda.py" >> ~/.gdbinit
|
测试运行,发现没有报错,正常使用。
安装gef
执行下列命令:
1 2 3 4 5
| wget https://github.com/hugsy/gef/raw/master/scripts/gef.sh chomod u+x gef.sh ./gef.sh wget https://github.com/hugsy/gef/raw/master/gef.py echo source /root/Tools/gef/.gdbinit-gef.py >> ~/.gdbinit
|
测试运行,根据错误提示发现,少两个库。
我们执行下面的命令安装:
1 2
| pip install keystone-engine pip install ropper
|
设置插件切换
gdb默认使用配置文件中最后一个插件。
每次我们想要切换插件都需要手动注释掉.gdbinit中其它两个插件。
为了灵活的调用三个插件,我们可以使用插件切换脚本进行切换。
我们打开.gdbinit文件(默认在用户家目录下,我的在root目录)。
我们在文件最后加入一个可以被识别的字符串,并把配置注释掉:
#this place is controled by user’s shell
(这里有个坑,需要在这个文本下面多加几个空行。不然执行shell脚本无法插入文本)

然后,我们编写一个shell脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| #!/bin/bash function Mode_change { name=$1 gdbinitfile=root/.gdbinit #这个路径按照你的实际情况修改 # gdbinitfile=/root/Desktop/mode peda="source /root/Tools/peda/peda.py" #这个路径按照你的实际情况修改 gef="source /root/Tools/gef/gef.py" #这个路径按照你的实际情况修改 pwndbg="source /root/Tools/pwndbg/gdbinit.py" #这个路径按照你的实际情况修改 sign=$(cat $gdbinitfile | grep -n "#this place is controled by user's shell") #此处上面的查找内容要和你自己的保持一致 pattern=":#this place is controled by user's shell" number=${sign%$pattern} location=$[number+2] parameter_add=${location}i parameter_del=${location}d message="TEST" if [ $name -eq "1" ];then sed -i "$parameter_del" $gdbinitfile sed -i "$parameter_add $peda" $gdbinitfile echo -e "Please enjoy the peda!\n" elif [ $name -eq "2" ];then sed -i "$parameter_del" $gdbinitfile sed -i "$parameter_add $gef" $gdbinitfile echo -e "Please enjoy the gef!\n" else sed -i "$parameter_del" $gdbinitfile sed -i "$parameter_add $pwndbg" $gdbinitfile echo -e "Please enjoy the pwndbg!\n" fi } echo -e "Please choose one mode of GDB?\n1.peda 2.gef 3.pwndbg" read -p "Input your choice:" num if [ $num -eq "1" ];then Mode_change $num elif [ $num -eq "2" ];then Mode_change $num elif [ $num -eq "3" ];then Mode_change $num else echo -e "Error!\nPleasse input right number!" fi gdb $1 $2 $3 $4 $5 $6 $7 $8 $9
|
把sh文件放到环境变量指向的路径中,我这里是放到了/usr/local/sbin目录下面。

然后加上运行权限:
最后运行gdb.sh查看是否成功:
