1. ホーム
  2. c

[解決済み] バッファオーバーフローを可能にするgccコンパイラの最適化をオフにする方法

2023-09-02 12:15:47

質問

私は今 宿題の問題 に取り組んでいて、それが動作するためにコンパイラの最適化保護を無効にする必要があります。私は、ubuntu linux 上で gcc 4.4.1 を使っていますが、どのフラグが正しいのかがわかりません。私はそれがアーキテクチャに依存することを理解します - 私のマシンは、32ビットIntelプロセッサで動作します。

ありがとうございます。

どのように解決するのですか?

それはいい問題ですね。 その問題を解決するためには、ASLRを無効にする必要があります。そうしないと、g()のアドレスが予測できなくなります。

ASLRを無効にします。

sudo bash -c 'echo 0 > /proc/sys/kernel/randomize_va_space'

カナリアを無効にする。

gcc overflow.c -o overflow -fno-stack-protector

カナリアとASLRが無効化された後は、次のような単純な攻撃となります。 楽しみながら利益を得るためにスタックを破壊する

ubuntuで使われているセキュリティ機能の一覧です。 https://wiki.ubuntu.com/Security/Features g()のアドレスはTEXTメモリセグメント内にあるため、常にメモリの実行可能領域にあり、NXビットを気にする必要はありません。 NX ビットは、スタックまたはヒープ上でシェルコードを実行しようとしている場合にのみ登場します(この割り当てでは必要ありません)。

では、その EIP !