1. 程式人生 > >做pwn題時的一些除錯技巧

做pwn題時的一些除錯技巧

當你覺得你的指令碼沒有問題,但是卻又怎麼也出你想要的結果時,你就需要用到除錯了

一個是設定context.log_level="debug"

指令碼在執行時就會輸出debug的資訊,你可以通過觀察這些資訊查詢哪步出錯了

而另一個就是 用pwnlib.gdb.attach(p)

在傳送payload前加入這條語句,同時加上pause() 時指令碼暫停

然後就會彈出來一個開啟著gdb的終端,你先在gdb中設定好斷點

然後再執行指令碼的那個終端按一下回車繼續執行指令碼,程式就會執行到斷點,你就可以檢視相應的暫存器,或者是棧的資訊

例如:

from pwn import*
import pwnlib
p = process('./xxxx')

payload = .....
pwnlib.gdb.attach(p)
pause()
p.sendline(payload)
p.interactive()