天天看點

de1ctf_2019_weapon(爆破_IO_2_1_stdout)

(這是我真正意義上的完完全全自己做的第一道堆題目,雖然花了快三個小時,謹以此篇紀念一下)

題目的例行檢查我就不放了,将程式放入ida中

de1ctf_2019_weapon(爆破_IO_2_1_stdout)

 程式的邏輯十分簡單,漏洞也非常明顯

de1ctf_2019_weapon(爆破_IO_2_1_stdout)

 重點是這個程式沒有給我們show函數,是以第一時間想到了爆破stdout和house of force這倆方法,但是house of force需要溢出去修改topchunk,是以這個題目使用爆破io_stdout來做

這道題的思路是将chunk在unsorted bin中釋放去獲得aren的值,要注意因為程式開啟得alsr 但是位址得後三位是固定得,是以我們要通過修改aren得值為 _IO_2_1_stdout_-0x43的值 通過爆破一個位元組去申請到該位置

我通過在chunk裡面嵌套chunk去修改aren的值 然後當我們修改了io_stdout這塊位置的值後會列印出libc的值,我們就可以往malloc_hook的值覆寫為one_gadget的值去拿到shell

完整exp如下:

 (吐槽一下index由自己選擇的這種題目是真的麻煩,做了半天給我自己都搞的有點小迷惑)