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

4.7 KiB
Raw Blame History

House of Einherjar

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

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

基本情報

コード

ゴール

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

必要条件

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

攻撃

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

参考文献と他の例