hacktricks/binary-exploitation/libc-heap/house-of-einherjar.md

5.1 KiB
Raw Blame History

House of Einherjar

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

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

基本情報

コード

ゴール

  • ほぼ任意の特定のアドレスにメモリを割り当てることです。

必要条件

  • チャンクを割り当てるときに偽のチャンクを作成します:
  • サニティチェックをバイパスするためにポインタを自分自身を指すように設定します
  • 1バイトのオーバーフローを使用して、1つのチャンクから次のチャンクにヌルバイトを流し込み、PREV_INUSEフラグを変更します。
  • オフバイヌルを悪用したチャンクのprev_sizeに、自身と偽のチャンクとの間の差を示します
  • 偽のチャンクのサイズもサニティチェックをバイパスするために同じサイズに設定されている必要があります
  • これらのチャンクを構築するには、ヒープリークが必要です。

攻撃

  • 攻撃者が制御するチャンク内に偽のチャンクが作成され、fdbkが元のチャンクを指すようにして保護をバイパスします
  • 他の2つのチャンクBC)が割り当てられます
  • Bのオフバイワンを悪用して、prev in useビットがクリアされ、prev_sizeデータがCチャンクが割り当てられる場所から前に生成された偽のAチャンクまでの差で上書きされます
  • このprev_sizeと偽のチャンクAのサイズは、チェックをバイパスするために同じである必要があります。
  • 次に、tcacheを埋めます
  • 次に、Cを解放して、偽のチャンクAと統合します
  • 次に、偽のAチャンクで始まり、Bチャンクをカバーする新しいチャンクDが作成されます
  • Einherjarのハウスはここで終わります
  • これは、ファストビンアタックまたはTcacheポイズニングで続けることができます
  • Bを解放して、それをファストビン/ Tcacheに追加します
  • Bfdを上書きして、Dチャンクを悪用してターゲットアドレスを指すようにします(Bが内部に含まれているため)
  • 次に、2つのmallocを行い、2番目のmallocがターゲットアドレスを割り当てることになります

参考文献と他の例