堆off by one

ctfwiki pwn筆記:https://ctf-wiki.github.io/ctf-wiki/pwn/linux/glibc-heap/off_by_one-zh/

off-by-one 利用思路 

  1. 溢出字節爲可控制任意字節:通過修改大小造成塊結構之間出現重疊,從而泄露其他塊數據,或是覆蓋其他塊數據。
  2. 溢出字節爲 NULL 字節:在 size 爲 0x100 的時候,溢出 NULL 字節可以使得 prev_in_use 位被清,這樣前塊會被認爲是 free 塊。

    (1) 這時可以選擇使用 unlink 方法(見 unlink 部分)進行處理。

    (2) 另外,這時 prev_size 域就會啓用,就可以僞造 prev_size ,從而造成塊之間發生重疊。此方法的關鍵在於 unlink 的時候沒有檢查按照 prev_size 找到的塊的後一塊(理論上是當前正在 unlink 的塊)與當前正在 unlink 的塊大小是否相等。

    (3) 此外,先寫後面的指針再溢出可以導致指針最低爲被置0;

    (4) 先溢出再修改後面的指針,導致打印原字符串時因爲結尾沒有0而泄露後面的內容。

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