mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-25 14:10:41 +00:00
4.8 KiB
4.8 KiB
配列のインデックス
htARTE(HackTricks AWS Red Team Expert)を通じて、ゼロからヒーローまでのAWSハッキングを学びましょう!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したい、またはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksのグッズを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクションを見つける
- **💬 Discordグループ**に参加するか、Telegramグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローする
- ハッキングトリックを共有するために、HackTricksとHackTricks CloudのGitHubリポジトリにPRを提出する
基本情報
このカテゴリには、配列のインデックスの処理のエラーによって特定のデータを上書きできる脆弱性が発生するすべての脆弱性が含まれます。これは、脆弱性の条件に完全に依存するため、特定の方法論はなく、非常に広範なカテゴリです。
ただし、いくつかの良い例があります:
- 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
- 64ビット、nxなし。サイズを上書きして、すべてが倍精度浮動小数点数として使用され、最小から最大までソートされるバッファオーバーフローの種類を取得します。その要件を満たすシェルコードを作成する必要があります。キャナリはその位置から移動してはいけないことに注意し、最後にRIPをretのアドレスで上書きし、前の要件を満たすアドレスを指す新しいアドレスをスタックの開始地点に置く必要があります(プログラムによって漏洩された)。その後、putsを使用してGOTに配置されたアドレスをリークするROPチェーンが使用されます(
exit
が呼び出されるため、pop rdi; ret
が呼び出されるため、スタック内でこのチェーンが実行されます)。最後に、ret2libを実行する新しいROPチェーンが使用されます。 - 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を行います(ヒープアドレスがチェックをバイパスするために必要です)。