チャレンジ一覧
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
05. HTMLソースコードの秘密
Webページには、見た目には表示されない情報がたくさん含まれています。 HTMLソースコードを見ると、開発者向けのメモ(コメント)が見つかることがあります。 このページのソースコードを確認してフラグを見つけましょう! ヒント: ブラウザで右クリック→「ページのソースを表示」 または、F12キーで開発者ツールを開く
06. JavaScriptのパスワードチェック
このページにはパスワードで保護されたエリアがあります。 しかし、JavaScriptでパスワードをチェックしているため、 ソースコードを見れば正しいパスワードが分かってしまいます! 開発者ツールでJavaScriptを確認して、正しいパスワードを見つけましょう。
07. Cookieを覗いてみよう
Webサイトは、Cookieという仕組みでブラウザに情報を保存します。 ログイン状態の管理などに使われますが、時には重要な情報が Cookieに保存されていることもあります。 このサイトのCookieを確認してフラグを見つけましょう!
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
SQL Injection 101
このログインフォームにはSQL Injection脆弱性があります。 適切な認証情報なしで admin としてログインし、フラグを取得してください。
Web-04. robots.txtの落とし穴
Webサイトにはクローラー向けに robots.txt が置かれていることがあります。この問題では、robots.txt がクロール除外を指定しているファイルに実際にアクセスできるかどうかを確認します。
Web-05. ディレクトリリスティングの罠
Nginxサーバーであるディレクトリのインデックス表示(autoindex)が有効になっている場合、本来隠しておきたいファイル一覧が誰でも見えてしまいます。公開されているディレクトリを調べてみましょう。
Web-06. HTTPヘッダーの偽装
このアプリケーションは特定のHTTPヘッダーの値をもとにアクセスを許可しています。ブラウザの通常操作では送られない値でも、リクエストを作り直せば自由に変更できます。
Web-07. URLパラメータの改ざん
このWebアプリケーションは、URLのGETパラメータ key の値をサーバー側でチェックします。必要なパラメータ名と値はページの説明やヒントから分かります。正しい key を指定すると、サーバーがフラグを返します。
Web-08. POSTデータの改ざん
ログインフォームには見た目には分からない隠しフィールド(hidden input)が含まれています。開発者ツールで確認し、送信データを書き換えられないか試してみましょう。
Web-09. Basic認証の甘い罠
保護されたエリアにはHTTP Basic認証がかかっていますが、開発者が誤って認証情報をページのHTMLコメントに残してしまっています。ページのソースを確認してみましょう。
Web-10. リダイレクトの裏側を見る
あるページにアクセスすると即座に別ページへリダイレクトされてしまいます。ブラウザは自動でリダイレクトに従いますが、その前のレスポンス本文を確認する方法を考えてみましょう。
XSS基礎 - ゲストブック
このWebアプリケーションには基本的なXSS脆弱性があります。ゲストブックの表示に入力がそのまま反映される箇所を探しましょう。フラグは、管理者のブラウザだけが読める内部エンドポイントにあります。ページの「管理者に確認してもらう」を押すと、管理者があなたの message を開きます。