Array Indexing
AWSハッキングの学習と練習:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングの学習と練習:
HackTricks Training GCP Red Team Expert (GRTE)
基本情報
このカテゴリには、配列のインデックスの処理のエラーによって特定のデータを上書きできる脆弱性が発生するすべての脆弱性が含まれます。これは、脆弱性の条件に完全に依存するため、特定の方法論はありません。
ただし、いくつかの良い例があります:
2つの衝突する配列があり、データが格納されているアドレス用の1つとそのデータのサイズ用のもう1つがあります。片方をもう片方で上書きすることが可能で、任意のアドレスをサイズとして指定することができます。これにより、GOTテーブル内の
free
関数のアドレスを書き込んでから、それをsystem
のアドレスで上書きして、メモリ内の/bin/sh
からfreeを呼び出すことができます。64ビット、nxなし。サイズを上書きして、すべてが倍精度浮動小数点数として使用され、最小から最大までソートされるバッファオーバーフローを取得します。その要件を満たすシェルコードを作成する必要があります。キャナリーはその位置から移動してはいけないことに注意し、最終的にRIPをretのアドレスで上書きし、前の要件を満たすアドレスを持つ新しいアドレスをスタックの開始を指すアドレスに置き換えます(プログラムによって漏洩された)ので、retを使用してそこにジャンプできます。
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