超越时空的调试器-qira

QIRA

我们在写一些exploit的时候,经常会碰见出现的内存不如预期的情况,这个时候我们就会使用调试器查看到底是什么地方出了问题。这个出错的地方肯定是比现在你查看内存的地方要晚了,也就是说,我们得,倒回去看内存,这在一般的调试器中是实现不了的。

qira就是这么一个调试器,它可以做到记录下整个过程,使得调试的过程变得更加简单。

总的来说,qira的作用:
1. 进行正常调试
2. 调试时如果发现内存不如所料,可以返回到之前的状态进行内存状态查看

这一点使得我们可以避免很多反复启动的工作,使得开发expoit更加简单

QIRA在CTF中使用

可惜,目前QIRA在CTF中很难被运用,原因是QIRA自己有一大片的输出,会和正在调试的程序的输出混淆,使得Pwntools很难去同时使得exploit和qira都正常工作。

所以我们需要将这些输出都去掉,所以我也就很自然的已经干了这个事情。
这样我们就可以很好的去使用qira了。

这个fork的地址位于:
https://github.com/Escapingbug/qira

我只做了非常简单的工作,也就是将输出删除掉,增加了一个quiet模式,由于qira整体情况比较复杂,qemu当中的参数不是很好处理,所以我直接将qemu部分的影响正常调试的输出删掉了,而middleware层增加了quiet模式来决定是否开启输出。

具体的使用方法在下面的readme中我添加了一些简介,大家可以去尝试一下。

TODO

QIRA目前看起来维护的并不多,上一次commit是6个月以前,不知道之后会怎么样,目前来看,我认为QIRA有以下几点不足:
1. 本身没有对quiet模式进行处理,我的fork虽然能够临时使用,但是绝对不是长久之计。而没有quiet模式会使得qira对pwntools不够透明
2. 使用web gui进行调试的方式,比较新颖,但是不应当是一个比较好的尝试,首先存在一些奇奇怪怪的问题,另外其web gui的提示性也不足,看不出来一些方框是干嘛用的,查看vmmap也无法直接查看具体值。
3. 对于一般使用pwntools调试习惯了的人来讲,我们更习惯使用gdb类似的调试方式进行调试
4. 静态分析几乎没有,连free malloc等库函数都看不到,使用r2会出现exception。

之后如果有时间,且等我把qira研究透了,到时候再把qira同样功能的重新写一遍,然后将上面几个问题解决一下。

不过,应该会过很久了吧,2333

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章