高版本glibc堆fd指標加密繞過
參考資料:[原創]glibc高版本堆題攻擊之safe unlink-Pwn-看雪-安全社群|安全招聘|kanxue.com
堆指標加密是在2.32版本引進的,作用在tcache和fastbin。主要是對fd指標進行異或操作來使得不好利用UAF等需要fd指標的手法。
從一個例子瞭解這個保護機制bin
加密過程:當前被釋放堆塊fd指標地址>>12(就是3位)後,與當前fd指標應該指向的位置(在tchache中就是前一個堆塊的fd指標地址)進行異或^操作,便完成加密。把加密內容放入fd指標。 ---
特別注意:第一個釋放的堆塊是與0進行異或,因為它前面沒有堆。其fd所存的值便是金鑰,可以破解各個堆的地址。
這裡舉一個例子,例題只釋放2個堆入tcache。
tchache[0]處的加密運算過程:
0x64aace8fe^0x64aace8fe2a0=0x000064ac84230a5e
金鑰^明文=密文
破解如下(讓密文^金鑰=明文)