超越時空的調試器-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

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