Ret2ret & Reo2pop

ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

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

Ret2ret

この技術の主な目的は、スタック内の既存のポインタを悪用してASLRをバイパスしようとすることです。

基本的に、スタックオーバーフローは通常、文字列によって引き起こされ、文字列はメモリ内で末尾にヌルバイトで終わります。これにより、スタックに既存のポインタが指す場所を減らすことができます。したがって、スタックに0xbfffffddが含まれている場合、このオーバーフローはそれを0xbfffff00に変換できます(最後のゼロバイトに注意)。

そのアドレスがスタック内の私たちのシェルコードを指す場合、ret命令にアドレスを追加して、このアドレスに到達するまでフローを到達させることが可能です。

したがって、攻撃は次のようになります:

  • NOPスレッド

  • シェルコード

  • スタックをEIPから**retへのアドレスで上書き**する(RETスレッド)

  • スタック内のアドレスを変更して0x00を追加し、それをNOPスレッドを指すようにします

このリンクをクリックすると、脆弱なバイナリの例とこのリンクでエクスプロイトを見ることができます。

Ret2pop

スタック内で変更したくない完璧なポインタを見つけることができる場合(ret2retでは最終的な最下位バイトを0x00に変更しました)、同じret2ret攻撃を実行できますが、RETスレッドの長さを1つ短くする必要があります(つまり、最終の0x00が完璧なポインタの直前のデータを上書きする)、そしてRETスレッドの最後のアドレスは**pop <reg>; ret**を指す必要があります。 これにより、完璧なポインタの前のデータがスタックから削除され(これは0x00によって影響を受けるデータです)、最終的なretが変更されずにスタック内の完璧なアドレスを指すようになります。

このリンクをクリックすると、脆弱なバイナリの例とこのリンクでエクスプロイトを見ることができます。

参考文献

ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

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

Last updated