お久しぶりです。ゼネットの阿部と申します。 ブログを書くのはかなり久しぶりです。
SECCON2018に参加し、チームとしては合計点203点という悲しい結果に終わりました。
なんとか1問解けたので、紹介しようと思います。
私が担当したのは の問題です。
以下のファイルのダウンロードとFLAGを入力するというだけで特段説明もなく、 SECCONにチャレンジするのが始めての私はもう分けがわかりませんでした。 【unzip.zip_26c0cb5b40e9f78641ae44229cda45529418183f】
しかし、始めなければしょうがないということで始めました...
【unzip.zip_...】というファイル形式で、問題もunzipだったので、 拡張子を【.zip】に変えてみて、展開したらどうかと試したところ以下のフォルダに展開されました。
【makefile.sh】を見てみると、
echo 'SECCON{'`cat key`'}' > flag.txt zip -e --password=`perl -e "print time()"` flag.zip flag.txt
どうやら環境変数のkeyをflag.txtに書き込んでそれをzip化しているようです。
ということは、
zip -e --password=`perl -e "print time()"` flag.zip flag.txt
でパスワードに設定している
perl -e "print time()"
がzipのパスワードで、これさえわかれば解けるはずだと思いました。
Perlはほぼ触れていなかったので、インターネットで検索するとPerlでシステム日時を取得し秒変換をしていることが分かりました。
今回のSECCONは 2018/10/27 15:00:00開始だったので
① 【2018/10/27 15:00:00】を秒に変換して【1540620000】で解凍を試みるも失敗。
UTCが原因かと思い、
② 【2018/10/27 6:00:00】【1540534242】で解凍を試みるも失敗。
日時が知りたいと思い、flag.zipのプロパティを開くと
このzipファイルが2018/10/27 0:10:42に作られていることがわかりました。
そこで、
③ 【2018/10/27 0:10:42】【1540566642】で解凍を試みるも失敗...
もしかしたら、ファイルのパスワードを取得したタイミングとファイルが生成されたタイミングがずれたのではと推測し、
④ 【2018/10/27 0:10:41】【1540566641】で解凍を試みると成功!!!
所要時間は【40分】ほどで、難易度も低かったため、もともと500点だった得点も【101点】に... まあ解けただけでも良しとしました。なかなか楽しかったです。
来年はもう少し準備をして、時間も確保してから参加しようと思いました。