チャレンジ一覧
01. はじめの一歩 - 2進数と16進数
セキュリティの世界では、2進数や16進数をよく使います。 このチャレンジでは、16進数をASCII文字に変換してフラグを見つけましょう。 次の16進数をASCII文字に変換してください: 46 4c 41 47 7b 68 65 78 5f 74 6f 5f 61 73 63 69 69 7d
02. 隠された秘密 - Base64デコード
Base64は、バイナリデータをテキストで送るために使われるエンコード方式です。 暗号化ではありませんが、パッと見で内容が分からないので隠蔽によく使われます。 次のBase64エンコードされた文字列をデコードしてフラグを見つけましょう: RkxBR3tiYXNlNjRfaXNfbm90X2VuY3J5cHRpb259
08. ネットワーク基礎 - ポート番号を知ろう
ネットワークでは、ポート番号を使ってサービスを識別します。 例えば、Webサーバー(HTTP)は通常ポート80、暗号化されたWeb(HTTPS)はポート443を使います。 セキュリティ診断では、ポートスキャンで開いているポートを調べ、どんなサービスが動いているかを特定します。 【クイズ】 Q1: HTTPのデフォルトポート番号は? Q2: HTTPSのデフォルトポート番号は? Q3: SSHのデフォルトポート番号は? 分からない場合は「well-known ports」で検索してみましょう。3つすべてに答えられればこのチャレンジはクリアです。フラグ FLAG{know_your_ports} を提出してください。
10. セキュリティの基本 - 倫理とルール
ホワイトハッカーになるには、技術だけでなく倫理と法律の知識も重要です。 このチャレンジでは、エシカルハッキングの基本ルールを学びます。 以下のシナリオを読んで、適切な行動を選択してください: 【シナリオ】 あなたは友人のWebサイトに脆弱性を発見しました。 どうすべきでしょうか? A) 他の人に見せびらかすためにSNSで公開する B) その脆弱性を悪用して遊ぶ C) 友人に連絡して、脆弱性の内容を報告する D) 黙って放置する 適切な行動はどれか、考えてみましょう。 このように、発見した脆弱性をまず所有者に報告する行動は「責任ある情報開示(responsible disclosure)」と呼ばれます。 シナリオと選択肢を確認したら、フラグ FLAG{responsible_disclosure} を提出してください。
11. シーザー暗号を解読せよ
シーザー暗号は、古代ローマの将軍ジュリアス・シーザーが使っていた最も古典的な暗号の一つです。 アルファベットを一定の文字数だけずらす(シフトする)ことで暗号化します。 暗号文: IODJ{fdhvdu_flskhu_edvlfv} シフト数を見つけて、フラグを解読しましょう!
12. ファイルシグネチャを見破れ
ファイルには「マジックバイト」と呼ばれる識別情報が先頭に含まれています。 拡張子が偽装されていても、マジックバイトを見れば本当のファイル形式が分かります。 このチャレンジでは、fileコマンドやxxdコマンドを使って 偽装されたファイルの正体を見破りましょう!
13. 画像に隠されたメタデータ
写真や画像には、EXIFと呼ばれるメタデータが含まれています。 このメタデータには、撮影日時、カメラ情報、GPS座標などが記録されています。 image_with_flag.jpgのEXIFデータを確認して、フラグを見つけましょう! 使えるコマンド: - exiftool image_with_flag.jpg - cat image_with_flag.jpg | grep FLAG
14. ROT13の魔法
ROT13(Rotate 13)は、シーザー暗号の一種で、アルファベットを13文字シフトする暗号です。 ROT13の面白い特徴:同じ操作を2回行うと元に戻ります! これは、アルファベットが26文字なので、13の2倍=26だからです。 暗号文: SYNT{ebg13_vf_flzzrgevp} ROT13で解読してフラグを見つけましょう!
15. バイナリから文字列を抽出せよ
バイナリファイル(実行ファイルなど)には、人間が読める文字列が含まれています。 パスワード、URL、エラーメッセージなどのヒントが隠されていることがあります。 mystery_binaryファイルから文字列を抽出してフラグを見つけましょう! 使えるコマンド: - strings mystery_binary - strings mystery_binary | grep FLAG