PIE

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

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

基本情報

PIE(Position Independent Executable)としてコンパイルされたバイナリは、プログラムが実行されるたびに異なるメモリ位置にロードされるため、ハードコードされたアドレスを防ぎます。

これらのバイナリを悪用するトリックは、相対アドレスを悪用することにあります。プログラムの部分間のオフセットは、絶対位置が変わっても同じままです。PIEをバイパスするには、通常はスタックなどの脆弱性を利用してアドレスを1つリークするだけで十分です。アドレスを取得すると、固定オフセットによって他のアドレスを計算できます。

PIEバイナリを悪用する際の役立つヒントは、ベースアドレスが通常000で終わることです。これは、メモリページがランダム化の単位であり、0x1000バイトのサイズであるためです。このアライメントは、正しいベースアドレスが特定されたかどうかを示すため、エクスプロイトが期待どおりに機能していない場合に重要なチェックとなります。 または、エクスプロイトにこれを使用できます。アドレスが**0x649e1024**にあることが漏洩した場合、ベースアドレスが0x649e1000であることがわかり、そこから関数や場所のオフセットを計算するだけです。

バイパス

PIEをバイパスするには、ロードされたバイナリのアドレスをいくつか漏洩する必要があります。これにはいくつかのオプションがあります:

  • ASLRが無効になっている場合:ASLRが無効になっている場合、PIEでコンパイルされたバイナリは常に同じアドレスにロードされるため、PIEは無意味になります。

  • 漏洩が与えられる(簡単なCTFチャレンジで一般的、この例をチェック

  • スタック内の正しい値を漏洩するまで、スタック内のEBPおよびEIPの値をブルートフォースする:

pageBF Addresses in the Stack

参考文献

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

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

Last updated