質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.06%

gccをダウングレードしたい

解決済

回答 3

投稿

  • 評価
  • クリップ 1
  • VIEW 7,783

score 15

バッファオーバーフローを勉強したいのですが、現在私が使用しているgccのバージョン(4.8.2)だとスタック保護機能が働いてしまい、実験できません。
そこで、gccをダウングレードしようと考え、以下のような手順を踏みました。(使用ディストリはUbuntu 14.04LTSです。MacOSX上でVirtualBoxを用いて、仮想OSとして立ちあげています。)

# Download GCC 3.2
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-3.4.0/gcc-3.4.0.tar.bz2
tar xjf gcc-3.2.tar.bz2
cd gcc-3.2
# Download GMP 5.1.3
wget https://ftp.gnu.org/gnu/gmp/gmp-5.1.3.tar.bz2
tar xjf gmp-5.1.3.tar.bz2
mv gmp-5.1.3 gmp
# Download MPFR 3.1.3
wget http://www.mpfr.org/mpfr-current/mpfr-3.1.3.tar.bz2
tar xjf mpfr-3.1.3.tar.bz2
mv mpfr-3.1.3 mpfr

# Download MPC 1.0.1
wget http://ftp.gnu.org/gnu/mpc/mpc-1.0.1.tar.gz
tar xzf mpc-1.0.1.tar.gz
mv mpc-1.0.1 mpc

# Configure & build
mkdir build
cd build
../configure --prefix=/usr/local 
make
make install

ですが、どうしてもmake installでこけてしまいます。
make[1]: *** `faster info'に必要なターゲット '../gcc/doc/include/gcc-common.texi'をmakeするルールがありません. 中止.
というエラーが原因のようです。

この問題の解決策、あるいはgccをダウングレードする代替手段を教えていただけないでしょうか?
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+5

Ubuntu 14.04LTSのgccはデフォルトでstack-protectorがenableになってるようです。
Security/Features - Ubuntu WikiのStack Protectorの行参照。

gcc -Q --help=common | grep stackで確認してみてください。私の環境ではdisableになっていました。

$ gcc --version
gcc (GCC) 5.1.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ gcc -Q --help=common | grep stack
  -Wstack-protector                     [disabled]
  -Wstack-usage=                        0xffffffff
  -fcombine-stack-adjustments           [disabled]
  -fconserve-stack                      [disabled]
  -fsplit-stack                         [enabled]
  -fstack-check
  -fstack-check=[no|generic|specific]
  -fstack-limit
  -fstack-limit-register=<register>
  -fstack-limit-symbol=<name>
  -fstack-protector                     [disabled]
  -fstack-protector-all                 [disabled]
  -fstack-protector-explicit            [disabled]
  -fstack-protector-strong              [disabled]
  -fstack-reuse=                        all
  -fstack-usage                         [disabled]

-fno-stack-protectorオプションでdisableにできるかもしれません。オプションが反映されているかどうかはgcc -Q -fno-stack-protector --help=common | grep stackで確認することができます。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/06/28 23:19 編集

    ありがとうございます!
    なぜか、
    ```
    $ gcc -Q --help=common | grep stack
    ...
    -fstack-protector [disabled]
    -fstack-protector-all [disabled]
    -fstack-protector-explicit [disabled]
    -fstack-protector-strong [disabled]
    ...
    ```
    となっていたのですが、gccに-fno-stack-protectorオプションを付けることで、バッファオーバーフロー攻撃が可能になりました!

    キャンセル

  • 2015/06/28 23:36

    おめでとうございます。

    ついでにあなたはUbuntuのgccパッチのバグを発見してしまったようですねw
    表示上disableなのにenbaleになってるなんて・・・些細なバグではありますが。

    キャンセル

  • 2015/06/29 09:42

    ありがとうございます!

    やはりバグだったのですね…(^_^;)
    こんな意識せずに見つかるものなんですね
    初心者故でしょうか笑

    キャンセル

+1

gccのスタック保護は、-fstack-protectorオプションを付けないと有効になりません。
単純に、-fstack-protectorオプションを付けなければいいのでは?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/06/28 21:55

    お恥ずかしながら、てっきりデフォルトでスタック保護されているものだと思っていました・・・
    最初の質問内容と異なってしまうようで申し訳ないのですが、おそらく私がスタック保護と勘違いしてしまったのは、以下のような結果が原因だと思われます。

    ```
    $gcc -o bof bof.c (bof.cは、サイズ5のchar型配列にstrcpyを用いて、コマンドライン引数をコピーするC言語のプログラム)
    $ ./bof AAAAAAAAAAAAAAAAAAAAAAAA
    *** stack smashing detected ***: ./bof terminated
    中止. (コアダンプ)
    ```

    このような結果は何故出てしまうのでしょうか?また、このような結果が出ないように(出力しないだけではなく、動作が起きないように)する解決策など、教えていただけないでしょうか?

    キャンセル

  • 2015/06/28 22:37

    参考までに、”単純なスタックバッファオーバーフロー攻撃をやってみる”
    http://inaz2.hatenablog.com/entry/2014/03/14/151011

    キャンセル

  • 2015/06/28 23:23

    cateyeさん、ありがとうございます!
    ここのサイト、バイナリ系の記事が詳しく書いてありますね!
    今後、参考にさせていただきますm(_ _)m

    キャンセル

0

「バッファオーバーフローを勉強したい」~「スタック保護機能が働いて」というのは、スタックを壊すコードを書いてでデバッグしたいという事でしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/06/28 20:26 編集

    はい、そうです。
    自分で作成したC言語のプログラムをGCCでコンパイルし、それに対して、実際にバッファーオーバーフロー攻撃を行ったらどういうことが起きるのか(攻撃コードの実行、デバッグetc...)、ということについて実験したいと考えています。
    実験対象は、自分で作ったプログラムに限ります

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.06%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る