unlink
コード
グラフィカルな説明
unlinkプロセスの素晴らしいグラフィカルな説明をチェックしてください:
セキュリティチェック
チャンクの指定されたサイズが次のチャンクで指定されたprev_sizeと同じかどうかをチェックする
また、
P->fd->bk == P
およびP->bk->fw == P
が成立しているかを確認するチャンクが小さくない場合は、
P->fd_nextsize->bk_nextsize == P
およびP->bk_nextsize->fd_nextsize == P
を確認する
リーク
unlinkされたチャンクは割り当てられたアドレスをクリーンアップしないため、それにアクセスできると、いくつかの興味深いアドレスをリークさせることができます:
Libcリーク:
Pが双方向リンクリストの先頭にある場合、
bk
はlibc内のmalloc_state
を指していますPが双方向リンクリストの末尾にある場合、
fd
はlibc内のmalloc_state
を指しています双方向リンクリストに空きチャンクが1つだけ含まれている場合、Pは双方向リンクリストにあり、
fd
とbk
の両方がmalloc_state
内のアドレスをリークさせることができます。
ヒープリーク:
Pが双方向リンクリストの先頭にある場合、
fd
はヒープ内の利用可能なチャンクを指していますPが双方向リンクリストの末尾にある場合、
bk
はヒープ内の利用可能なチャンクを指していますPが双方向リンクリストにある場合、
fd
とbk
はヒープ内の利用可能なチャンクを指しています
Last updated