Q&A
gcc 9.3.0でcファイルをコンパイルするときにssp(カナリア)をオプションで指定しているのですが、うまく反映されていません。以下のコマンドを入力しました。
gcc -fstack-protector main.c
しかし、checksec a.outで確認しましても、No canary found となってしまいます。
どうしたらsspを有効にできるでしょうか?
・環境
OS:Parrot OS 64bit
gcc: 9.3.0
以下のような質問にはグッドを送りましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 間違っている
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
回答2件
0
自己解決
gccのsspオプションは、関数内にバッファが存在しないと有効にならないみたいです。私の場合は以下のようなソースコードだったためsspオプションがつきませんでした。
int main(int argc, char *argv[]) {
int a = 1, b = 2;
a = a + b;
printf(a);
}
$>gcc -fstack-protector main.c
$>checksec a.out
$>No Canary
sspを有効にするには、
int main(int argc, char *argv[]) {
char buffer[16];
strcpy(buffer, argv[2]);
printf(buffer);
}
$>gcc -fstack-protector
$>checksec a.out
$>Canary Found
このコードであれば、関数内でバッファを宣言しているため、sspが有効になりました。
結果、gccがソースコードを解釈しsspの有無を判断していたということになります。回答してくださった方ありがとうございました。
投稿2020/07/19 20:19
総合スコア6
0
gccではsspはデフォルトで有効のようなので、特にオプションをしなくてもいいです。
そのオプションはsspを無効にするオプションです。
https://qiita.com/GmS944y/items/b10a1abde35f7175ea4b#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB
投稿2020/07/04 01:39
総合スコア698
良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
関連した質問
Q&A
受付中
apt-get install で失敗してしまいます。
回答2
クリップ0
更新
2022/01/12
Q&A
解決済
pytorchとcudaの依存関係
回答1
クリップ0
更新
2021/12/08
Q&A
解決済
【Python】pip install が出来ない件について!
回答2
クリップ2
更新
2014/12/28
Q&A
解決済
エラーが出ずにコンパイル終了しないコードについて
回答1
クリップ0
更新
2023/02/05
Q&A
解決済
Amazon Linux2上のPython3.7でOpenCVをimportしたい
回答1
クリップ0
更新
2023/02/06
Q&A
解決済
コンパイラ(?)で演算結果が変わる
回答2
クリップ2
更新
2023/01/10
Q&A
受付中
C 単語の出現頻度を調べる
回答4
クリップ0
更新
2022/07/08
同じタグがついた質問を見る
Security+は、IT業界団体であるCompTIA認定の資格の一つです。ネットワークセキュリティやコンプライアンスと運用セキュリティといったセキュリティ分野における知識・技術の証明になり、セキュリティインシデントに対応するための知識も評価されます。
C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。
Kali Linuxは、DebianベースのLinuxディストリビューションです。ペネトレーションテストを主な目的とし、250以上の専用ソフトウェアがインストールされています。
GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。
良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。