チャレンジ一覧
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 '<答え>' に渡すと、フラグが表示されます。
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 '<答え>' に渡すと、フラグが表示されます。
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 '<答え>' に渡すと、フラグが表示されます。
Python自動化 - アクセスログの解析
起動のたびに作られる 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 '<答え>' に渡すと、フラグが表示されます。
Python自動化 - パスワードハッシュのクラック
起動のたびに乱数で作られる data.txt(SHA-256 ハッシュ値の一覧)と wordlist.txt(小文字英数字4文字のトークン800語)を調べます。data.txt の各行は、おとり sha256(word)(word は wordlist.txt の1語)か、本物の断片 sha256("{i}:{chunk}")(i は 0 始まりの断片番号、chunk は wordlist.txt の1語)です。本物の行だけを見つけて i の昇順に chunk をつなぐと、24文字の答えになります。python3 challenge.py '<答え>' に渡すと、フラグが表示されます。
Web-11. 社員ポータルへのSQLインジェクション侵入
KinoGadget社の社内向け「社員アクセスポータル」は、レガシーな認証システムで動いています。開発者が動的SQLクエリを直接組み立てていると噂されており、管理者アカウントとして侵入できるか試すことになりました。
Web-12. BlogSearchの反射型XSS
BlogSearchはブログ記事を検索できる簡単な検索エンジンです。検索クエリが結果ページにそのまま(エスケープされずに)埋め込まれます。フラグは、サイト管理者のブラウザだけが持つセッションCookie(session_flag)に入っています。反射型XSSのURLを作り、ページ下の「管理者に報告」から管理者に開かせて、管理者のCookieを /report?c=... に送らせてください。送られた値は /loot で読めます。
Web-13. ImageVaultのファイルアップロード回避
ImageVaultはJPG・PNG・GIF画像をアップロードできる画像ホスティングサービスです。ファイルの検証がファイル名の末尾だけを見ているとしたら、どんな不正なファイルが通ってしまうでしょうか。
Web-14. ネットワーク診断ツールのコマンドインジェクション
このアプリはホスト名を入力するとpingを実行してくれる診断ツールです。入力したホスト名がそのままシェルコマンドに渡されているとしたら、何が起きるでしょうか。
Web-15. UserProfile ServiceのIDOR
UserProfile ServiceはユーザーIDを指定してプロフィール情報を取得できるAPIを提供しています。自分のID以外を指定した場合にアクセス権のチェックが行われているか確認してみましょう。
Web-16. CHIMERA研究ラボの弱いJWT秘密鍵
社員ポータルへの侵入で見つけた手がかりから、隔離された研究ラボシステム「CHIMERA」の存在が判明しました。このシステムはJWTで認証しており、開発者が推測しやすい秘密鍵で署名している疑いがあります。
Web-17. FileShareのパストラバーサル
FileShareは共有フォルダ内のファイルを一覧・ダウンロードできるアプリです。ダウンロードエンドポイントに渡すファイル名パラメータが検証されているか確認してみましょう。
Web-18. コンタクトフォームのXXE攻撃
このコンタクトフォームは入力内容をXMLに変換してサーバーへ送信し、サーバー側でパースした結果を表示します。XMLパーサーの設定次第では思わぬファイルが読めてしまうかもしれません。
Web-19. 銀行アプリのCSRF送金
このバンキングアプリではログイン中のユーザーが送金操作を行えます。別サイトから送金リクエストを送らせることができないか、CSRF対策の有無を確認してみましょう。
Web-20. URL FetcherからのSSRF
このURL Fetcherサービスはユーザーが指定したURLの内容を取得して表示します。サーバーが到達できる内部専用サービスにまでリクエストを送らせることができないか確認しましょう。
テキスト処理の達人 - sed & awk
/app/data.csv にはCSVデータが保存されています。 以下の処理を行ってください: 1. 2列目(価格)が1000以上の行のみを抽出 2. 3列目(商品名)に含まれる "_" をスペースに置換 3. 1列目(ID)の先頭に "PROD-" を追加 処理後のデータの最初の行に含まれる商品名がフラグです。 フォーマット: ID,価格,商品名
ネットワーク解析 - DNSゾーン転送の漏洩
設定不備の権威DNSサーバーに対する、認証なしのゾーン転送(AXFR)が成功した通信をキャプチャしました。配布されるパケットキャプチャ(traffic.pcap)から転送された内部ゾーンのTXTレコードを解析し、フラグを回収してください。
ネットワーク解析 - ICMPによるデータ持ち出し
社内の端末10.20.0.15から外部の203.0.113.66へ、ping(ICMPエコー要求)を装ってデータが持ち出されました。トップページからtraffic.pcapをダウンロードし、外部宛てのエコー要求のデータ部をICMPシーケンス番号の順に連結してフラグを復元してください。
ネットワーク解析 - SMB共有列挙の情報漏洩
攻撃者がネットワーク上の SMB 共有を列挙している通信をキャプチャしました。配布されるパケットキャプチャ(traffic.pcap)から SMB(TCP/445)のトラフィックを追い、漏洩したファイルの中身に含まれるフラグを抽出してください。
ネットワーク解析 - Telnetの認証情報
古いサーバーがTelnet(平文)でリモート管理されていました。配布されるパケットキャプチャ(traffic.pcap)からTelnetセッションを追跡し、ログイン時のパスワードを抽出してください。パスワードがフラグです。
ネットワーク解析 - 匿名FTPの転送ファイル
匿名FTPで平文転送されたセッションをキャプチャしました。配布されるパケットキャプチャ(traffic.pcap)からFTPのデータ転送を追跡し、ダウンロードされたファイルの中身に含まれるフラグを抽出してください。
ネットワーク解析 - 平文HTTPの認証情報
公共Wi-Fiで傍受した通信を解析します。誰かが平文HTTPでログインしていました。配布されるパケットキャプチャ(traffic.pcap)からHTTP POSTのログイン要求を見つけ、パスワードを抽出してください。パスワードがフラグです。
ネットワーク解析 - 平文SMTPの添付ファイル
社内の端末10.30.0.25が、メールサーバー10.30.0.10の25番ポートへ暗号化なしでメールを送りました。トップページからtraffic.pcapをダウンロードし、メールに添付された社外秘のメモ(secret-memo.txt)を取り出して、そこに書かれたトークン(フラグ)を見つけてください。
プログラミング - Bashジョブログの解析
/challenge/jobs.log は、コンテナの起動のたびに乱数で作り直される夜間バッチの実行ログです。1行が1回のジョブ実行で、key=value の欄が空白で区切られています。job が archive で status が ok の行だけを選び、part の番号順に value(16進文字列を逆順にしたもの)を元に戻してつなぎ、16進デコードしてアーカイブトークン(英小文字と数字)を求めてください。そのトークンを python3 challenge.py '<トークン>' に渡すと、正しいときだけフラグが表示されます。