チャレンジ一覧

絞り込みを解除

99 問 (1 / 5 ページ)

暗号Level 1★☆☆☆☆

02. 隠された秘密 - Base64デコード

Base64は、バイナリデータをテキストで送るために使われるエンコード方式です。 暗号化ではありませんが、パッと見で内容が分からないので隠蔽によく使われます。 次のBase64エンコードされた文字列をデコードしてフラグを見つけましょう: RkxBR3tiYXNlNjRfaXNfbm90X2VuY3J5cHRpb259

WebセキュリティLevel 1★☆☆☆☆

05. HTMLソースコードの秘密

Webページには、見た目には表示されない情報がたくさん含まれています。 HTMLソースコードを見ると、開発者向けのメモ(コメント)が見つかることがあります。 このページのソースコードを確認してフラグを見つけましょう! ヒント: ブラウザで右クリック→「ページのソースを表示」 または、F12キーで開発者ツールを開く

WebセキュリティLevel 1★☆☆☆☆

06. JavaScriptのパスワードチェック

このページにはパスワードで保護されたエリアがあります。 しかし、JavaScriptでパスワードをチェックしているため、 ソースコードを見れば正しいパスワードが分かってしまいます! 開発者ツールでJavaScriptを確認して、正しいパスワードを見つけましょう。

WebセキュリティLevel 1★☆☆☆☆

07. Cookieを覗いてみよう

Webサイトは、Cookieという仕組みでブラウザに情報を保存します。 ログイン状態の管理などに使われますが、時には重要な情報が Cookieに保存されていることもあります。 このサイトのCookieを確認してフラグを見つけましょう!

プログラミングLevel 1★☆☆☆☆

09. Pythonで自動化 - ファイル読み込み

セキュリティ業務では、大量のデータを処理するためにプログラミングが必須です。 このチャレンジでは、Pythonでファイルを読み込んでフラグを見つけます。 「data.txt」というファイルに100行のテキストがあり、 その中にフラグが1つ含まれています。 以下のPythonコードを完成させて実行してください: ```python # data.txtを開いて、各行を読み込む with open('data.txt', 'r') as file: for line in file: # 各行に「FLAG{」が含まれているかチェック if '____' in line: # ここを埋める print(line.strip()) ```

暗号Level 1★☆☆☆☆

11. シーザー暗号を解読せよ

シーザー暗号は、古代ローマの将軍ジュリアス・シーザーが使っていた最も古典的な暗号の一つです。 アルファベットを一定の文字数だけずらす(シフトする)ことで暗号化します。 暗号文: IODJ{fdhvdu_flskhu_edvlfv} シフト数を見つけて、フラグを解読しましょう!

暗号Level 1★☆☆☆☆

14. ROT13の魔法

ROT13(Rotate 13)は、シーザー暗号の一種で、アルファベットを13文字シフトする暗号です。 ROT13の面白い特徴:同じ操作を2回行うと元に戻ります! これは、アルファベットが26文字なので、13の2倍=26だからです。 暗号文: SYNT{ebg13_vf_flzzrgevp} ROT13で解読してフラグを見つけましょう!

WebセキュリティLevel 1★☆☆☆☆

SQL Injection 101

このログインフォームにはSQL Injection脆弱性があります。 適切な認証情報なしで admin としてログインし、フラグを取得してください。

WebセキュリティLevel 1★☆☆☆☆

Web-04. robots.txtの落とし穴

Webサイトにはクローラー向けに robots.txt が置かれていることがあります。この問題では、robots.txt がクロール除外を指定しているファイルに実際にアクセスできるかどうかを確認します。

WebセキュリティLevel 1★☆☆☆☆

Web-05. ディレクトリリスティングの罠

Nginxサーバーであるディレクトリのインデックス表示(autoindex)が有効になっている場合、本来隠しておきたいファイル一覧が誰でも見えてしまいます。公開されているディレクトリを調べてみましょう。

WebセキュリティLevel 1★☆☆☆☆

Web-06. HTTPヘッダーの偽装

このアプリケーションは特定のHTTPヘッダーの値をもとにアクセスを許可しています。ブラウザの通常操作では送られない値でも、リクエストを作り直せば自由に変更できます。

WebセキュリティLevel 1★☆☆☆☆

Web-07. URLパラメータの改ざん

このWebアプリケーションは、URLのGETパラメータ key の値をサーバー側でチェックします。必要なパラメータ名と値はページの説明やヒントから分かります。正しい key を指定すると、サーバーがフラグを返します。

WebセキュリティLevel 1★☆☆☆☆

Web-08. POSTデータの改ざん

ログインフォームには見た目には分からない隠しフィールド(hidden input)が含まれています。開発者ツールで確認し、送信データを書き換えられないか試してみましょう。

WebセキュリティLevel 1★☆☆☆☆

Web-09. Basic認証の甘い罠

保護されたエリアにはHTTP Basic認証がかかっていますが、開発者が誤って認証情報をページのHTMLコメントに残してしまっています。ページのソースを確認してみましょう。

WebセキュリティLevel 1★☆☆☆☆

Web-10. リダイレクトの裏側を見る

あるページにアクセスすると即座に別ページへリダイレクトされてしまいます。ブラウザは自動でリダイレクトに従いますが、その前のレスポンス本文を確認する方法を考えてみましょう。

WebセキュリティLevel 1★☆☆☆☆

XSS基礎 - ゲストブック

このWebアプリケーションには基本的なXSS脆弱性があります。ゲストブックの表示に入力がそのまま反映される箇所を探しましょう。フラグは、管理者のブラウザだけが読める内部エンドポイントにあります。ページの「管理者に確認してもらう」を押すと、管理者があなたの message を開きます。

暗号Level 2★★☆☆☆

AES-ECBモードの脆弱性

ECBモードは同じ平文ブロックが同じ暗号文ブロックになるため、パターンが漏れます。この入門問題では、まず暗号化とエンコードの違いを確認します。 16進数データ: 4b494e4f434f7b6563625f6d6f64655f69735f7765616b7d この16進数データを文字列にデコードしてフラグを提出してください。

プログラミングLevel 2★★☆☆☆

APIリクエスト - 最大利益取引の特定

コンテナの起動時に、株価API が http://localhost:9102 で動き始めます(server.py を起動する必要はありません)。5銘柄・約2000件の取引を GET /api/stocks と GET /api/stocks/<symbol> で取得し、sell_price - buy_price が最大の取引を1件だけ見つけて、その id を POST /api/check に {"id": "..."} の形で送ってください。正しい id のときだけ応答にフラグが含まれます。取引データは起動のたびに作り直されます。誤答は3回までで、超えるとそのコンテナでは正解でも受け付けられなくなります。

プログラミングLevel 2★★☆☆☆

Python演習 - Base64ストリームの一括デコード

起動のたびに作られる data.txt(約150行)の各行は Base64 です。1行ずつデコードし、結果が "b64:" で始まるときは、残りをさらに Base64 デコードします(何段か続く行があります)。デコードできない行(壊れた Base64、文字として読めないバイト列)は飛ばしてください。最後に "frag[i/8]=xxxx" の形になった行が本物の断片で、"old-frag[...]" や "test-frag[...]" などはおとりです。本物の断片の xxxx(4文字)を i の昇順につないだ32文字が答えです。python3 challenge.py '<答え>' に渡すと、フラグが表示されます。

プログラミングLevel 2★★☆☆☆

Python演習 - CSV売上データの条件抽出

起動のたびに作られる data.txt は売上 CSV(transaction_id,date,product_id,amount,status,ref,notes)です。amount が 10000 以上、status が completed(大文字・小文字も含めて完全一致)、product_id が SEC- で始まる、の3条件をすべて満たす取引は複数あります(条件を1つだけ満たさない紛らわしい行がたくさん混ざっています)。それらの ref 列を transaction_id の昇順に並べて '-' でつないだものが答えです。python3 challenge.py '<答え>' に渡すと、フラグが表示されます。

プログラミングLevel 2★★☆☆☆

Python演習 - JSONユーザーデータの複合検索

起動のたびに作られる JSON の data.txt({"users": [...]})を調べます。各ユーザーは id, name, email, role, active, token を持ちます。role が "admin"(完全一致)、active が true、email に "@secret.com" を含む、の3条件をすべて満たすユーザーは複数います(条件を1つだけ満たさない紛らわしいユーザーがたくさん混ざっています)。それらの token を id の昇順に並べて '-' でつないだものが答えです。python3 challenge.py '<答え>' に渡すと、フラグが表示されます。

プログラミングLevel 2★★☆☆☆

Python演習 - アクセスログから対象IPを追跡

起動のたびに作られる data.txt(約1300行)は Web サーバーのアクセスログです。192.168.1.100 のアクセスだけを取り出してください(192.168.1.10 や 192.168.1.101 など、似た IP のおとりが混ざっています)。この IP は "GET /notes?part=N&data=XXXX" で12個の断片を送っていますが、ステータスが 200 の行だけが有効で、404 や 500 は失敗した送信なので数えません。有効な data(4桁の16進)を part の昇順(時刻順ではありません)につないだ48文字が答えです。python3 challenge.py '<答え>' に渡すと、フラグが表示されます。

プログラミングLevel 2★★☆☆☆

Python自動化 - Base64の一括デコード

起動のたびに作られる data.txt(約150行)の各行は Base64 です。1行ずつデコードし、結果が "b64:" で始まるときは、残りをさらに Base64 デコードします(何段か続く行があります)。デコードできない行(壊れた Base64、文字として読めないバイト列)は飛ばしてください。最後に "frag[i/8]=xxxx" の形になった行が本物の断片で、"old-frag[...]" や "test-frag[...]" などはおとりです。本物の断片の xxxx(4文字)を i の昇順につないだ32文字が答えです。python3 challenge.py '<答え>' に渡すと、フラグが表示されます。

プログラミングLevel 2★★☆☆☆

Python自動化 - CSV売上データの抽出

起動のたびに作られる data.txt は売上 CSV(transaction_id,date,product_id,amount,status,ref,notes)です。amount が 10000 以上、status が completed(大文字・小文字も含めて完全一致)、product_id が SEC- で始まる、の3条件をすべて満たす取引は複数あります(条件を1つだけ満たさない紛らわしい行がたくさん混ざっています)。それらの ref 列を transaction_id の昇順に並べて '-' でつないだものが答えです。python3 challenge.py '<答え>' に渡すと、フラグが表示されます。