[解決済み] バッファオーバーフローを可能にする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 !
関連
-
Cエラー [エラー] 代入_Ashesの左オペランドにlvalueが必要です-プログラマーズ・シークレット
-
VSCodeでCプログラムを書くとエラーになる:ソースファイル "stdio.h" を開くことができない
-
initializer element is not constant "というエラーが表示されるのですが?
-
C 言語のポインタ配列のポインタ型、ポインタに値を割り当てるために配列名を使用、コンパイル時の警告:互換性のないポインタ型からの初期化
-
[解決済み] Valgrind が初期化されていないバイトについて警告する
-
[解決済み] C 言語で const char* を char* に変換するには?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] なぜGCCは、速度の代わりにサイズに最適化すると、15-20%速いコードを生成するのですか?
-
[解決済み] なぜalloca()の使用はグッドプラクティスとみなされないのでしょうか?
-
[解決済み] C言語でファイルサイズを取得するには?[重複]する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Cエラー [エラー] 代入_Ashesの左オペランドにlvalueが必要です-プログラマーズ・シークレット
-
libc++abi.dylib: NSException タイプの捕捉されない例外で終了するエラー
-
コンパイルエラー:可変長オブジェクトが初期化されていない可能性があります。
-
[解決済み] mallocで文字列を確保する
-
[解決済み] stdinとSTDIN_FILENOの違いは何ですか?
-
[解決済み] Windows用Cコンパイラ?[クローズド]
-
[解決済み] C関数から文字列を返す
-
[解決済み] C - Setデータ構造を実装するには?
-
[解決済み] プログラム終了前にmallocの後にfreeをしないと本当に何が起こるのか?
-
[解決済み] C言語でファイルサイズを取得するには?[重複]する