チャレンジ一覧
AES-ECBモードの脆弱性
ECBモードは同じ平文ブロックが同じ暗号文ブロックになるため、パターンが漏れます。この入門問題では、まず暗号化とエンコードの違いを確認します。 16進数データ: 4b494e4f434f7b6563625f6d6f64655f69735f7765616b7d この16進数データを文字列にデコードしてフラグを提出してください。
Bashスクリプト - 自動化の力
/app/numbers.txt には1から1000までの数字が1行に1つずつ書かれています。 この中から、以下の条件を満たす数字をすべて抽出し、その合計値を求めてください: 条件: - 3の倍数 かつ 5の倍数 - 7で割り切れない Bashスクリプトを作成して解いてください。 合計値がフラグになります。
Git探偵 - 失われたコミット
/app/repo はGitリポジトリです。 開発者が誤って重要な情報を含むコミットを削除してしまいました。 git reflog を使って削除されたコミットを見つけ、そのコミットメッセージに含まれるフラグを取得してください。 ヒント: git reflog で過去の操作履歴を確認できます
JSONマスター - データ抽出
/app/users.json には100人のユーザー情報がJSON形式で保存されています。 この中から以下の条件を満たすユーザーを抽出してください: - age が 25以上30以下 - country が "Japan" - is_active が true 該当するユーザーのメールアドレスをすべて抽出し、アルファベット順にソートした最初のメールアドレスを KINOCO{...} で包んだものがフラグです。 ヒント: jq コマンドを使用してください
Linux-02. sudoで許可されたvimからの権限昇格
一般ユーザーがsudoでパスワードなしに実行できるコマンドを確認してみましょう。GTFOBinsで知られるテクニックを使うと、そのコマンドからシェルへ抜け出せる場合があります。
Linux-03. cron設定ファイルを読み解け
このシステムには複数のcron設定(/etc/cron.d、/etc/crontab、ユーザーcrontabなど)が存在します。それぞれの設定ファイルを確認し、フラグが書き込まれた場所を見つけてください。
Linux-Cron権限昇格. 書き込み可能なrootスクリプトを乗っ取れ
rootが定期実行するcronスクリプトのパーミッションを確認してみましょう。一般ユーザーでも書き込めてしまう場合、次の実行タイミングでどんなコードが動くか考えてみてください。
Linux-systemd. サービスユニットの環境変数を確認せよ
systemdのユニットファイルには [Service] セクションで環境変数を設定できます。登録されているサービス定義を調べ、そこに設定された値を確認してください。
Linux-シンボリックリンク迷路. 分岐する道を辿り抜け
複数のディレクトリがシンボリックリンクで複雑に繋がっています。おとりのヒントファイルに惑わされず、リンクを1つずつ辿って本物のフラグファイルまでたどり着いてください。
Linux-スクリプトデバッグ. 壊れたbashスクリプトを直せ
このスクリプトには複数の意図的なバグ(タイポ、構文ミスなど)が仕込まれており、最後まで実行されません。bashのデバッグ機能を使ってバグを1つずつ直してください。
Linux-ネットワーク基礎. リッスン中のポートに接続せよ
このシステムではバックグラウンドで特定のポートをリッスンするサービスが起動しています。ss/netstatでポートを特定し、ncで接続してフラグを受け取ってください。
Linux-バックアップ探索. 紛れ込んだ一時ファイルを見抜け
プロジェクトディレクトリには .bak や .tmp、~ で終わる紛らわしいバックアップ/一時ファイルが複数あります。本物のフラグは隠しファイルの中に隠れています。
Linux-パイプライン. grepとawkの連携でログを絞り込め
アクセスログには大量のアクセス記録が含まれています。あるIPアドレスが短時間に多数の404を出しており、その一連のリクエストのパスをつなげるとフラグになります。grep・awk・sort・uniq などをパイプで組み合わせて組み立ててください。
Linux-パッケージ情報. インストール済みパッケージの詳細を調べよ
このシステムには自作のdebパッケージがインストールされています。dpkgやaptを使ってパッケージの詳細情報を確認し、その説明文に隠された情報を見つけてください。
Linux-プロセス追跡. 動き続けるプロセスの正体を暴け
複数のバックグラウンドプロセスが動いている中に、コマンドライン引数にフラグを持つものが1つ紛れています。psコマンドで一覧を確認し、それを見つけ出してください。
Linux-ユーザー調査. awkで対象ユーザーを絞り込め
このシステムには複数のユーザーが登録されています。/etc/passwdをawkで解析して特定の条件に合うユーザーを見つけ、そのホームディレクトリの隠しファイルを確認してください。
Linux-ログローテーション. 圧縮された過去ログを検索せよ
ログローテーションによって一部の古いログファイルはgzip圧縮されています。展開せずに圧縮ファイルの中身を検索するコマンドを使ってフラグを探してください。
Linux-ログ探索. 複数ログファイルからフラグを掘り出せ
アプリケーションログとシステムログの複数ファイルが用意されています。DEBUGレベルの1行だけにフラグが埋め込まれているので、grepなどで絞り込んで見つけてください。
Linux-環境変数の秘密. FLAGという名の変数を探せ
このシステムには複数の環境変数(ダミーの認証情報を含む)が設定されています。envコマンドで一覧を確認し、フラグを保持している変数を見つけてください。
OSINT基礎 - メタデータ解析
退職した社員の共有ドライブから回収したファイル群(写真 `IMG_*.jpg` と Office 文書)が `/challenge/evidence/` にあります。何人かの社員が個人用エクスポートツール `PhotoVault-ExportTool` を使っており、このツールで書き出した写真の Exif `Software` タグには `build-tag=KINOCO{...}` が残っています。フラグは、このツールで書き出され、かつ Exif の撮影者(`Artist`)が退職者本人である、ただ1枚の写真のビルドタグです。退職者は、引き継ぎ資料 `Handover_Notes.docx` を最後に保存した人物(docProps の `cp:lastModifiedBy`)です。`exiftool` はありませんが、`unzip` と同梱の `/challenge/exif_dump.py` で読めます。
RC4ストリーム暗号の脆弱性
RC4は過去に広く使われましたが、現在は非推奨です。この入門問題では渡されたデータ形式を見抜きます。 Base64文字列: S0lOT0NPe3JjNF9pc19kZXByZWNhdGVkfQ== これは実際にはRC4暗号文ではありません。Base64デコードしてフラグを取得してください。
Vigenère暗号の解読
Vigenere暗号は複数のシーザー暗号を組み合わせた古典暗号です。鍵長が分かっている暗号文を復号し、フラグを取得してください。 暗号文: KMNRCS{vlginhri_clpleu_axtdco} 鍵の長さは4文字です。暗号文を解読してフラグを提出してください。
テキスト処理の達人 - sed & awk
/app/data.csv にはCSVデータが保存されています。 以下の処理を行ってください: 1. 2列目(価格)が1000以上の行のみを抽出 2. 3列目(商品名)に含まれる "_" をスペースに置換 3. 1列目(ID)の先頭に "PROD-" を追加 処理後のデータの最初の行に含まれる商品名がフラグです。 フォーマット: ID,価格,商品名
ハッシュ衝突の発見
MD5では異なる入力が同じハッシュ値になる衝突が実用的に作れます。衝突耐性が破られたハッシュを安全用途に使ってはいけません。 同一MD5を持つとされる2つのファイル: file_a != file_b md5(file_a) = d131dd02c5e6eec4693d9a0698aff95c md5(file_b) = d131dd02c5e6eec4693d9a0698aff95c MD5衝突を発見したことを表す語句として、md5、collision、found の3語を小文字のままアンダースコアでつなぎ、KINOCO{...} の形式で提出してください。