hacktricks/binary-exploitation/array-indexing.md

4.5 KiB
Raw Blame History

配列のインデックス

{% hint style="success" %} AWSハッキングの学習と練習:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングの学習と練習: HackTricks Training GCP Red Team Expert (GRTE)

HackTricksのサポート
{% endhint %}

基本情報

このカテゴリには、配列のインデックスの処理のエラーによって特定のデータを上書きできる脆弱性が発生するすべての脆弱性が含まれます。これは、脆弱性の条件に完全に依存するため、特定の方法論はありません。

ただし、いくつかの良いがあります:

  • https://guyinatuxedo.github.io/11-index/swampctf19_dreamheaps/index.html
  • 2つの衝突する配列があり、データが格納されているアドレス用の1つとそのデータのサイズ用のもう1つがあります。片方をもう片方で上書きすることが可能で、任意のアドレスをサイズとして指定することができます。これにより、GOTテーブル内のfree関数のアドレスを書き込んでから、それをsystemのアドレスで上書きして、メモリ内の/bin/shからfreeを呼び出すことができます。
  • https://guyinatuxedo.github.io/11-index/csaw18_doubletrouble/index.html
  • 64ビット、nxなし。サイズを上書きして、すべてが倍精度浮動小数点数として使用され、最小から最大までソートされるバッファオーバーフローを取得します。その要件を満たすシェルコードを作成する必要があります。キャナリーはその位置から移動してはいけないことに注意し、最終的にRIPをretのアドレスで上書きし、前の要件を満たすアドレスを持つ新しいアドレスをスタックの開始を指すアドレスに置き換えますプログラムによって漏洩されたので、retを使用してそこにジャンプできます。
  • https://faraz.faith/2019-10-20-secconctf-2019-sum/
  • 64ビット、relroなし、キャナリーなし、nxなし、PIEなし。スタック内の配列にオフバイワンがあり、配列内のオフバイワンによって上書きされたアドレスにすべての数値の合計を書き込むポインタを制御できるようになります。スタックが制御されるため、GOT exitアドレスがpop rdi; retで上書きされ、スタックにmainへのアドレスが追加されます(mainに戻ります。putsを使用してGOTに配置されたアドレスを漏洩させるためのROPチェーンが使用されますexitが呼び出されるため、pop rdi; retが呼び出されるため、スタック内でこのチェーンが実行されます。最後に、ret2libを実行する新しいROPチェーンが使用されます。
  • https://guyinatuxedo.github.io/14-ret_2_system/tu_guestbook/index.html
  • 32ビット、relroなし、キャナリーなし、nx、PIE。libcとヒープのアドレスをスタックから漏洩させるために悪いインデックスを悪用します。バッファオーバーフローを悪用して、system('/bin/sh')を呼び出すret2libを行いますヒープアドレスがチェックをバイパスするために必要です