問題
unzipファイルが与えられている
解答
与えられたファイルをfileコマンドで見ると
unzip: Zip archive data, at least v2.0 to extract, compression method=deflate
と返ってくるのでzipファイルであることがわかります。
拡張子が消されているのでmv unzip unzip.zip等で復活させます。
そのまま開こうとすると開きません。
stringをして{でgrepしても当然何もでませんでした。
また総当たりかと思い、jhon the ripperでハッシュにしてからrockyouを試しましたが無駄でした。
zip2john unzip.zip > hash.txt
john --format=pkzip hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
観念してここからは本書を元に進めます。
どうやらパスワードを入れずにエンターを叩くと、3つのファイルを展開しようとして見れます。
1つ目と2つ目のファイル名を検索にかけるようです。(そんな手もあるんだ)
するとそれぞれ興味深いことが書かれたメルマガが一番最初にヒットします
両方SECCONだしほぼ中のファイルで間違いありませんが、念の為確認します。
zipinfoコマンドを用いることでzipファイルの情報を表示でき、bytesなども見れます。
このbytesを比較して一致していれば、同じものであると判断して間違いないでしょう。
では実際に確認していきますが、手元に先ほどのメルマガがないので、wgetなどで取得します。
wget URLの形式でダウンロードします。
このようになったら成功です。
では実際に
zipinfo unzip.zip
ls -la b*
などで両方の大きさを比較すると
と一致していることがわかります。
つまり暗号化前の文章が手に入ったので、それを使って攻撃していきます。
PkCrackというツールを用います。
以下のリポジトリからダウンロード
その後リポジトリのbuildに書かれている通りにビルドして
usageのnow enter下にある以下のコマンドで実行します。
pkcrack -C encrypted-ZIP -c ciphertextname -P plaintext-ZIP
-p plaintextname -d decrypted_file -a
ここでplaintext-ZIPがまだないので、先に作成します。
zip backnumber08.zip backnumber08.txt
その後完全な実行コマンドが以下のコマンドです。
pkcrack -C unzip.zip -c backnumber08.txt -p backnumber08.txt -P backnumber08.zip -d unzip_decrypte.zip
lsでzipファイルが増えていることを確認できます。
ls
backnumber08.txt backnumber09.txt unzip_decrypte.zip
backnumber08.zip hash.txt unzip.zip
backnumberが上書きされるため新たなフォルダに移しました。よって解凍すると以下のようになります。
ls
backnumber08.txt backnumber09.txt flag unzip_decrypte.zip
これでflagの中身を確認することができるようになりました。まずfileコマンドで調査します。
file flag
flag: Microsoft Word 2007+
Wordファイルであるとわかったので、拡張子をdocxに変えてファイルから開きます。
※Kaliにはwordがなかったのでホストマシンにscpコマンドでフィアルを転送して開きました
mv flag flag.docx
すると以下のようになりました。
一見なにもなさそうですが、青線が引かれていて変な場所に改行があるので見えない文字があると分かります。
文字の色を返るかコピーして別の場所に貼り付けると、以下のフラグが現れます。
SECCON{1s_th1s_passw0rd_ weak?}
参考文献
中島 明日香『入門セキュリティコンテスト ― CTFを解きながら学ぶ実戦技術』翔泳社, 2023年.