# 配列のインデックス
htARTE(HackTricks AWS Red Team Expert)を通じて、ゼロからヒーローまでのAWSハッキングを学びましょう! HackTricksをサポートする他の方法: - **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする - **ハッキングトリックを共有するために、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する
## 基本情報 このカテゴリには、配列のインデックスの処理のエラーによって特定のデータを上書きできる脆弱性が発生するすべての脆弱性が含まれます。これは、脆弱性の条件に完全に依存するため、特定の方法論はなく、非常に広範なカテゴリです。 ただし、いくつかの良い**例**があります: - [https://guyinatuxedo.github.io/11-index/swampctf19\_dreamheaps/index.html](https://guyinatuxedo.github.io/11-index/swampctf19\_dreamheaps/index.html) - **2つの衝突する配列**があり、データが格納される**アドレス**用の1つとそのデータの**サイズ**用のもう1つがあります。片方をもう片方で上書きすることが可能で、任意のアドレスをサイズとして指定することができます。これにより、`free`関数のアドレスをGOTテーブルに書き込んでから、それを`system`のアドレスで上書きして、メモリ内の`/bin/sh`からfreeを呼び出すことができます。 - [https://guyinatuxedo.github.io/11-index/csaw18\_doubletrouble/index.html](https://guyinatuxedo.github.io/11-index/csaw18\_doubletrouble/index.html) - 64ビット、nxなし。サイズを上書きして、すべてが倍精度浮動小数点数として使用され、最小から最大までソートされるバッファオーバーフローの種類を取得します。その要件を満たすシェルコードを作成する必要があります。キャナリはその位置から移動してはいけないことに注意し、最後にRIPをretのアドレスで上書きし、前の要件を満たすアドレスを指す新しいアドレスをスタックの開始地点に置く必要があります(プログラムによって漏洩された)。その後、putsを使用してGOTに配置されたアドレスをリークするROPチェーンが使用されます(`exit`が呼び出されるため、`pop rdi; ret`が呼び出されるため、スタック内でこのチェーンが実行されます)。最後に、ret2libを実行する新しいROPチェーンが使用されます。 - [https://faraz.faith/2019-10-20-secconctf-2019-sum/](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](https://guyinatuxedo.github.io/14-ret\_2\_system/tu\_guestbook/index.html) - 32ビット、relroなし、キャナリなし、nx、PIEなし。libcとヒープのアドレスをスタックから漏洩させるために悪いインデックスを悪用します。バッファオーバーフローを悪用して、`system('/bin/sh')`を呼び出すret2libを行います(ヒープアドレスがチェックをバイパスするために必要です)。