hacktricks/binary-exploitation/heap/off-by-one-overflow.md

5.3 KiB
Raw Permalink Blame History

Off by one overflow

ゼロからヒーローまでのAWSハッキングを学ぶ htARTEHackTricks AWS Red Team Expert

HackTricksをサポートする他の方法

基本情報

1バイトのオーバーフローへのアクセスを持つことで、攻撃者は前のサイズのメタデータ情報を変更し、実際に解放されるチャンクを改ざんすることができ、最終的には別の合法的なチャンクを含むチャンクを生成できます。

コード例:

ゴール

  • チャンクを別のチャンクの中に含ませ、その2番目のチャンクに対する書き込みアクセスを可能にし、含まれるチャンクを上書きできるようにする

必要条件

  • 前のサイズのメタデータ情報を変更するための1バイトのオーバーフロー

攻撃

  • 3つのメモリチャンクa、b、cが順番に予約されます。その後、中間のチャンクが解放されます。最初のチャンクには1バイトのオーバーフロー脆弱性があり、攻撃者はそれを悪用して0x00を挿入します前のバイトが0x10であれば、中間のチャンクが実際より0x10小さいことを示します
  • 次に、中間の解放されたチャンクbに2つのより小さなチャンクが割り当てられますが、b + b->sizeはcチャンクを更新しないため、指定されたアドレスが適切なサイズよりも小さいためです。
  • 次に、b1とcが解放されます。c - c->prev_sizeはまだb今はb1を指しているため、両方が1つのチャンクに統合されます。ただし、b2はまだb1とcの間にあります。
  • 最後に、新しいmallocが実行され、このメモリ領域を再取得し、実際にb2を含むことになり、新しいmallocの所有者がb2の内容を制御できるようになります。

この画像は攻撃を完璧に説明しています:

https://heap-exploitation.dhavalkapil.com/attacks/shrinking_free_chunks

参考文献

ゼロからヒーローまでのAWSハッキングを学ぶ htARTEHackTricks AWS Red Team Expert

HackTricksをサポートする他の方法