チャレンジ一覧
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 '<答え>' に渡すと、フラグが表示されます。
Windows レジストリからUSB履歴を探せ
SYSTEM ファイル(レジストリ hive の USBSTOR 部分をテキストで表したもの)を解析して、2025-11-19 14:45(UTC)ごろに接続されていた USB デバイスを特定し、そのデバイスが記録していた値からフラグを取得しましょう。Windowsフォレンジックの基本を学びます。 提供ファイル: SYSTEM
ディスクイメージから秘密ファイルを探せ
ext4 ファイルシステムのディスクイメージ `disk.img` を調査し、ファイルシステム内に隠された秘密のバックアップを見つけ出して、フラグを取得してください。 コンテナの中では mount できないため、debugfs でファイルシステムを直接たどります。
ネットワーク解析 - 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)を取り出して、そこに書かれたトークン(フラグ)を見つけてください。
パケットキャプチャからパスワードを探せ
ショップの内部ネットワークで記録された平文HTTP通信をキャプチャしました。多数のリクエストの中に管理者アカウントのログイン試行が1件だけ紛れています。配布されるパケットキャプチャ(traffic.pcap)を解析し、管理者(username=admin)のパスワードを抽出してください。パスワードがフラグです。
ファイルのタイムスタンプから侵入時刻を特定せよ
evidence/ の複数のファイルの更新時刻を分析して、侵入が発生した時間帯と関連する隠しファイルを特定しましょう。隠しファイルの中身は、そのまま読めるとは限りません。 タイムライン分析の基本を学びます。
プログラミング - Bashジョブログの解析
/challenge/jobs.log は、コンテナの起動のたびに乱数で作り直される夜間バッチの実行ログです。1行が1回のジョブ実行で、key=value の欄が空白で区切られています。job が archive で status が ok の行だけを選び、part の番号順に value(16進文字列を逆順にしたもの)を元に戻してつなぎ、16進デコードしてアーカイブトークン(英小文字と数字)を求めてください。そのトークンを python3 challenge.py '<トークン>' に渡すと、正しいときだけフラグが表示されます。
プログラミング - PINの総当たり
/challenge/vault.json は、コンテナの起動のたびに乱数で作り直される金庫の記録です。salt(16進文字列)と、pin_hash = sha256(salt + pin)(salt と6桁の pin を文字列のまま連結して UTF-8 にしたもののハッシュ)が入っています。000000 から 999999 までを総当たりして pin_hash に一致する6桁の PIN(先頭の 0 も含む)を見つけ、python3 challenge.py '<PIN>' に渡してください。正しいときだけフラグが表示されます。
プログラミング - ハッシュ検証と復号
起動のたびに乱数で作られた証拠ファイル artifact-manifest.json を解析します。artifact(artifact_00 から artifact_09)ごとに複数のレコード(name・sha256・data)があり、正しいのは data を Base64 デコードした SHA-256 が sha256 欄と一致する1件だけです。正しいレコードの中身を SHA-256(name) のダイジェストで XOR 復号し、artifact 番号の順につないだ40文字(小文字英数字)が答えです。答えを `python3 challenge.py '<答え>'` に渡すと、正解のときだけフラグが表示されます。
プログラミング - バイナリTLVの解析
/challenge/capture.bin は、コンテナの起動のたびに乱数で作り直される独自形式のバイナリです。先頭4バイトは KBIN、続いて TLV レコード(type 1バイト、length 2バイト(ビッグエンディアン)、value)が並び、type 0x7F(長さ 0)が終端です。type 0x10 と 0x20 の value はそのまま、それ以外の value は各バイトを 0x5A で XOR して格納されています。type が 0x42 のレコードの value を、ファイルの中の順番どおりに取り出して 0x5A で XOR し、つないだトークン(英小文字と数字)を python3 challenge.py '<トークン>' に渡してください。正しいときだけフラグが表示されます。
メモリダンプからプロセスを探せ
memory.dump は、メモリダンプの解析結果(pslist / psscan / cmdline)を並べた簡略化テキストです。リストから隠されている不審なプロセスを見つけ、そのプロセスが持つ設定の値からフラグを読み取りましょう。メモリフォレンジックの基本を学びます。 提供ファイル: memory.dump
削除されたファイルを復元せよ
ディスクイメージから削除された圧縮ファイル(ZIP)を復元し、中のメモからフラグを見つけましょう。 ファイルカービングツールを使用して、削除されたファイルを復元する方法を学びます。 提供ファイル: disk_image.dd
正規表現 - 一度だけ出現する黄金の記号
data.txt から KINO-数字4桁-英大文字4文字の記号をすべて抽出し、一度だけ出現する値を challenge.py に入力してください。正解時に起動時注入 FLAG が表示されます。
画像のLSBに隠されたメッセージ
PNGファイルのLSB(最下位ビット)に隠されたメッセージを抽出しましょう。 ステガノグラフィ解析の基本を学びます。 提供ファイル: image.png