チャレンジ一覧

絞り込みを解除

110 問 (2 / 5 ページ)

フォレンジックLevel 2★★☆☆☆

ディスクイメージから秘密ファイルを探せ

ext4 ファイルシステムのディスクイメージ `disk.img` を調査し、ファイルシステム内に隠された秘密のバックアップを見つけ出して、フラグを取得してください。 コンテナの中では mount できないため、debugfs でファイルシステムを直接たどります。

暗号Level 2★★☆☆☆

ハッシュ衝突の発見

MD5では異なる入力が同じハッシュ値になる衝突が実用的に作れます。衝突耐性が破られたハッシュを安全用途に使ってはいけません。 同一MD5を持つとされる2つのファイル: file_a != file_b md5(file_a) = d131dd02c5e6eec4693d9a0698aff95c md5(file_b) = d131dd02c5e6eec4693d9a0698aff95c MD5衝突を発見したことを表す語句として、md5、collision、found の3語を小文字のままアンダースコアでつなぎ、KINOCO{...} の形式で提出してください。

暗号Level 2★★☆☆☆

ハッシュ長拡張攻撃

MD5、SHA-1、SHA-256などの構造では、secret || message の単純ハッシュを署名にすると長さ拡張攻撃を受ける場合があります。 既知のメッセージとSHA-256: message = "user=guest" sha256(secret || message) = 84d89877f0d4041efb6bf91a16f0248f2fd573e6af05c19f96bedb9f882f7882 append = "&admin=true" この問題では攻撃手順の理解を確認します。攻撃名を表す3つの英単語 hash、extension、attack を小文字のままアンダースコアでつなぎ、KINOCO{...} の形式で提出してください。

フォレンジックLevel 2★★☆☆☆

パケットキャプチャからパスワードを探せ

ショップの内部ネットワークで記録された平文HTTP通信をキャプチャしました。多数のリクエストの中に管理者アカウントのログイン試行が1件だけ紛れています。配布されるパケットキャプチャ(traffic.pcap)を解析し、管理者(username=admin)のパスワードを抽出してください。パスワードがフラグです。

暗号Level 2★★☆☆☆

パディングオラクル入門

パディングオラクル攻撃では、エラーの違いが平文復元の手がかりになります。この入門問題では、漏えいしたBase64文字列からフラグを読み取ります。 漏えいしたBase64文字列: Vmlld1NvdXJjZTpLSU5PQ097cGFkZGluZ19vcmFjbGVfYmFzaWNzfQ== この文字列をBase64デコードし、ViewSource: の後ろにある文字列をフラグとして提出してください。

フォレンジックLevel 2★★☆☆☆

ファイルのタイムスタンプから侵入時刻を特定せよ

evidence/ の複数のファイルの更新時刻を分析して、侵入が発生した時間帯と関連する隠しファイルを特定しましょう。隠しファイルの中身は、そのまま読めるとは限りません。 タイムライン分析の基本を学びます。

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

プログラミング - Bashジョブログの解析

/challenge/jobs.log は、コンテナの起動のたびに乱数で作り直される夜間バッチの実行ログです。1行が1回のジョブ実行で、key=value の欄が空白で区切られています。job が archive で status が ok の行だけを選び、part の番号順に value(16進文字列を逆順にしたもの)を元に戻してつなぎ、16進デコードしてアーカイブトークン(英小文字と数字)を求めてください。そのトークンを python3 challenge.py '<トークン>' に渡すと、正しいときだけフラグが表示されます。

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

プログラミング - 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>' に渡してください。正しいときだけフラグが表示されます。

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

プログラミング - ハッシュ検証と復号

起動のたびに乱数で作られた証拠ファイル 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 '<答え>'` に渡すと、正解のときだけフラグが表示されます。

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

プログラミング - バイナリ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 '<トークン>' に渡してください。正しいときだけフラグが表示されます。

フォレンジックLevel 2★★☆☆☆

メモリダンプからプロセスを探せ

memory.dump は、メモリダンプの解析結果(pslist / psscan / cmdline)を並べた簡略化テキストです。リストから隠されている不審なプロセスを見つけ、そのプロセスが持つ設定の値からフラグを読み取りましょう。メモリフォレンジックの基本を学びます。 提供ファイル: memory.dump

暗号Level 2★★☆☆☆

レインボーテーブル攻撃

ソルトなしの高速ハッシュは、事前計算された逆引きDBで簡単に破られる場合があります。与えられたMD5ハッシュを逆引きしてください。 MD5ハッシュ: 5f4dcc3b5aa765d61d8327deb882cf99 このハッシュを逆引きし、元の文字列を KINOCO{...} の形式で提出してください。

暗号Level 2★★☆☆☆

ワンタイムパッド鍵再利用攻撃

ワンタイムパッドは鍵を一度だけ使う場合に安全です。同じ鍵を再利用すると、既知平文から別の平文を復元できます。 同じ鍵で暗号化された2つの暗号文: ciphertext1_hex = 1c0a070901 known_plaintext1 = HELLO ciphertext2_hex = 060a1e160b known_plaintext1 と ciphertext1 から鍵を復元し、ciphertext2 をXORで復号してください。復号した文字列を KINOCO{...} で包んだものがフラグです。

暗号Level 2★★☆☆☆

予測可能な乱数

固定seedの疑似乱数は再現できます。暗号用途で一般用途の乱数を使ってはいけません。 フラグ生成コード: import random random.seed(12345) flag_chars = [chr(random.randint(65, 90)) for i in range(10)] print("KINOCO{" + "".join(flag_chars) + "}") 同じPythonコードを実行し、生成されるフラグを提出してください。

フォレンジックLevel 2★★☆☆☆

削除されたファイルを復元せよ

ディスクイメージから削除された圧縮ファイル(ZIP)を復元し、中のメモからフラグを見つけましょう。 ファイルカービングツールを使用して、削除されたファイルを復元する方法を学びます。 提供ファイル: disk_image.dd

暗号Level 2★★☆☆☆

小さいRSA鍵の破壊

RSAは十分大きな素数を使うことで安全性を保ちます。この問題では小さすぎるnを素因数分解し、秘密指数を求めて暗号文列を復号します。 公開鍵と暗号文: n = 323 e = 5 ciphertexts = [115, 181, 241, 109, 109, 57, 190, 115, 241, 57, 65, 271, 49, 115, 57, 241, 190, 271, 57, 85, 271, 241, 65] nを素因数分解して秘密指数dを求め、各暗号文を復号してください。復号した文字列を KINOCO{...} で包んだものがフラグです。

暗号Level 2★★☆☆☆

暗号解析 - アフィン暗号の解読

ciphertext.txtは、英文の報告書をアフィン暗号 E(x) = (a×x + b) mod 26 で暗号化したものです。大文字・小文字は保たれ、英字以外はそのままです。平文が KINOCO という単語で始まることを手がかりに鍵a, bを求めて復号し、最後の行のフラグを提出してください。

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

正規表現 - 一度だけ出現する黄金の記号

data.txt から KINO-数字4桁-英大文字4文字の記号をすべて抽出し、一度だけ出現する値を challenge.py に入力してください。正解時に起動時注入 FLAG が表示されます。

フォレンジックLevel 2★★☆☆☆

画像のLSBに隠されたメッセージ

PNGファイルのLSB(最下位ビット)に隠されたメッセージを抽出しましょう。 ステガノグラフィ解析の基本を学びます。 提供ファイル: image.png

フォレンジックLevel 3★★★☆☆

Chromeブラウザからセッションクッキーを抽出せよ

Linux 版 Chrome のプロファイルから取り出した `/challenge/Cookies` と `/challenge/History`(どちらも SQLite)を渡します。 被害者は、社内メールのリンクから偽の SSO ページを経由して、ある社内管理画面にログインしました。その管理画面の `admin_session_id` クッキーの値(フラグ)を取り出してください。管理画面はいくつもあり、どの管理画面のクッキーも同じ形をしています。Cookies の値は暗号化されています。 使えるツール: sqlite3, openssl, python3, xxd

フォレンジックLevel 3★★★☆☆

DNSトンネリングを検出せよ

DNS クエリの記録 `dns_queries.log` を解析し、DNS トンネリングによるデータ流出を検出してください。単一ドメインへ長いラベルの問い合わせを大量に出しているホストを見つけ、ラベルを seq 順に並べて hex デコードするとフラグになります。

フォレンジックLevel 3★★★☆☆

NTFS $MFTから削除ファイルの痕跡を探せ

Windows 端末 `KINOCO-WS07` の `$MFT` をレコード単位のテキストに書き出した `/challenge/mft_records.txt`(先頭にクラスタサイズとダンプの開始 LCN があります)と、ボリューム C: のクラスタの生データ `/challenge/cluster_dump.bin` を渡します。 ユーザー yuki が削除した `secret_note.txt.gz` は非常駐(non-resident)で、断片に分かれてディスクに残っています。MFT の `$DATA` に残るデータラン(RunList)の生バイトを読み解いて断片を集め、元のファイルを復元して、フラグを取り出してください。常駐データに見える文字列は、答えとは限りません。 使えるツール: python3, xxd, dd, gzip, grep, awk

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

Python自動化 - SQLiteデータベース解析

起動のたびに作られる data.db(SQLite。users / orders / audit_log)を調べます。orders を user_id ごとに SUM(amount) で集計し、合計額が大きい社員の上位3人を求めてください(注文件数が最も多い社員や、1回の注文額が最も大きい社員はおとりで、上位3人には入りません)。audit_log には、全社員に1件ずつ action = 'security_note' の行 "Confidential clearance credential issued to this employee: <16桁16進>" があります。上位3人の credential を、合計額の大きい順に '-' でつないだものが答えです。python3 challenge.py '<答え>' に渡すと、フラグが表示されます。

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

Python自動化 - カスタム暗号の復号

cipher.txt には独自の暗号でエンコードされたフラグが16進で入っています。暗号化は各バイトに add(鍵加算) -> xor(位置依存) -> rotl(巡回シフト) を適用したものです。この逆変換を Python で実装してフラグを復元してください(仕様は python3 challenge.py で表示)。