Array Indexing

htARTE(HackTricks AWS Red Team Expert)を通じて、ゼロからヒーローまでのAWSハッキングを学びましょう!

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

基本情報

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

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

  • 2つの衝突する配列があり、データが格納されるアドレス用の1つとそのデータのサイズ用のもう1つがあります。片方をもう片方で上書きすることが可能で、任意のアドレスをサイズとして指定することができます。これにより、free関数のアドレスをGOTテーブルに書き込んでから、それをsystemのアドレスで上書きして、メモリ内の/bin/shからfreeを呼び出すことができます。

  • 64ビット、nxなし。サイズを上書きして、すべてが倍精度浮動小数点数として使用され、最小から最大までソートされるバッファオーバーフローの種類を取得します。その要件を満たすシェルコードを作成する必要があります。キャナリはその位置から移動してはいけないことに注意し、最後にRIPをretのアドレスで上書きし、前の要件を満たすアドレスを指す新しいアドレスをスタックの開始地点に置く必要があります(プログラムによって漏洩された)。その後、putsを使用してGOTに配置されたアドレスをリークするROPチェーンが使用されます(exitが呼び出されるため、pop rdi; retが呼び出されるため、スタック内でこのチェーンが実行されます)。最後に、ret2libを実行する新しいROPチェーンが使用されます。

  • 64ビット、relroなし、キャナリなし、nxなし、PIEなし。スタック内の配列にオフバイワンがあり、配列内のオフバイワンによって上書きされたアドレスにすべての数値の合計を書き込むポインタを制御できるようになります。スタックが制御されるため、GOT exitアドレスがpop rdi; retで上書きされ、スタックにmainのアドレスが追加されます(mainにループバック)。putsを使用してGOT内のアドレスをリークするROPチェーンが使用されます(exitが呼び出されるため、pop rdi; retが呼び出されるため、スタック内でこのチェーンが実行されます)。最後に、ret2libを実行する新しいROPチェーンが使用されます。

  • 32ビット、relroなし、キャナリなし、nx、PIEなし。libcとヒープのアドレスをスタックから漏洩させるために悪いインデックスを悪用します。バッファオーバーフローを悪用して、system('/bin/sh')を呼び出すret2libを行います(ヒープアドレスがチェックをバイパスするために必要です)。

Last updated