チャレンジ一覧
Linux-カーネルモジュール. 脆弱なドライバでroot権限を得よ
このチャレンジは、脆弱なキャラクタデバイスドライバを安全なユーザー空間シミュレーションとして解析します。実際のカーネルモジュールはロードされません。root デーモンがドライバを /run/vulnerable.sock として公開し、あなたは非特権ユーザー challenger(uid 1000)として接続します。提供されたドライバソース vulnerable.c を読み、read/write の境界不備を突いて自分の資格情報を uid 0 に書き換え、GETFLAG でフラグを取得してください。
Linux-バッファオーバーフロー. gets()の脆弱性を突け
SUIDが付与された脆弱なCバイナリが用意されています。保護機構が無効化されたこのプログラムのバッファオーバーフローを突いて、隠された関数へ制御を移してください。
暗号解析 - DSA nonce再利用による秘密鍵復元
起動のたびに新しい鍵で作られる /challenge/signatures.json には、DSA の公開パラメーター(p は1024ビット、q は160ビット、g、y)、4つの署名(message, h, r, s。h は SHA-256(message) を整数にして mod q)、暗号化されたフラグ encrypted_flag_hex が入っています。4つの署名のうち2つは同じ nonce k を使っています。同じ r を持つ2つの署名から nonce k と秘密鍵 x を復元し、SHA256(str(x)) を繰り返した XOR 鍵で encrypted_flag_hex を復号してフラグを得てください。
暗号解析 - RSAのWiener攻撃
組み込み機器の開発チームが、復号を速くするためRSAの秘密指数dをとても小さくして鍵を作りました。public_key.txtの公開指数eはnと同じくらい大きな数です。e/nの連分数展開からdを求めて ciphertext.txt を復号し、フラグを取り出してください。
暗号解析 - 線形合同法の内部状態の復元
あるサービスは、セッショントークンも暗号化の鍵ストリームも、パラメーターa, c, mが秘密の線形合同法 x_{k+1} = (a×x_k + c) mod m から作っていました。tokens.txtの連続した10個の出力からa, c, mを復元し、続きの出力を8バイトずつ並べた鍵ストリームで暗号化された secret.enc.hex を復号して、フラグを取り出してください。