[ksnctf] Zip de kure

ksnctfにチャレンジ 第19問目です。

※ksnctfは常駐型のCTFサイトです。 ※問題のページはコチラです。

Zip de kure

パスワード付きZIPファイルの解凍を目指します。 ZIPパスワードの解析は

特定のソフトの乱数生成のバグなどを利用する 少ない桁であると分かっている場合は総当り もう1つが 既知平文攻撃

です。 特定の暗号化方式で 一部の暗号文と平文が分かっている場合 他の暗号文の元の平文も求まるものがあり ZIPではこの攻撃が有効で、CTFではよく使われます。

昔の SECCON にもあった気がします。

また、ZIPはパスワードがわからなくても中に入っている データのリストは取得できるので 有名な .dll や データの名前が確認できた場合 この方法が有効だったりします。

さて

$ unzip -l flag.zip
Archive:  flag.zip
Hint:
- It is known that the encryption system of ZIP is weak against known-plaintext attacks.
- We employ ZIP format not for compression but for encryption.
  Length      Date    Time    Name
---------  ---------- -----   ----
      304  06-03-2012 18:14   flag.html
   255964  06-03-2012 18:10   Standard-lock-key.jpg
---------                     -------
   256268                     2 files

Hint としてもろに known-plaintext って書いてありますね。 安心して実行できます。 pkcrack を使用して

Standard-lock-key.jpg

が使えそうなデータなので検索してみると  これ がそうですね。

以上から

$ pkcrack -C flag.zip -c Standard-lock-key.jpg -p ./Standard-lock-key.jpg -d flag_.zip

-C : 暗号zip
-c : 暗号zip内で平文が分かるデータ
-p : 平文
-d : 出力するzip名

$ unzip flag_.zip

で無事に展開できました。