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