人生と研究がしんどいのでフルでは参加しなかった. 早く楽になりたい
詳しくは @matsubara0507 の書いたWriteupを読んでほしい
自分でFlagを獲ったのは次の問題:
- SECCON WARS 2015
- Unzip the file
- Exec dmesg
またおまえか形式の問題. 再生すると, 文字が流れていくが, QRコードの部分が常に暗くなっているので, コマで切り出して処理すればよさげな感じだった. ただし, 途中でSECCONロゴが前面を流れて邪魔してくる.
諸般の事情でOpenCVで動画を扱う方法を会得していたので, それを試してみることにした.
import cv2
import numpy as np
vid = cv2.VideoCapture('8SFsln4VyEk.mp4')
print('File loaded.')
for _ in range(600):
vid.read()
print('Skipped.')
i = 0
frames = []
while True:
ret, frame = vid.read()
if not ret:
break
frames.append(cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY))
sum_frame = np.sum(frames, axis=0)
sum_frame[sum_frame < 18000] = 0
cv2.imwrite('result.png', sum_frame)
cv2.imshow('', sum_frame)
cv2.waitKey(0)
cv2.destroyAllWindows()
600フレーム目くらいまでロゴが邪魔するので飛ばして, それ以降のコマをグレー画像にしてリストに入れておく.
そのあとnp.sum()
で1枚にまとめて, 適当に閾値を決めて出力.
まとめて出力するだけだと境界がはっきりしないかなんかでうまくQRコードとして認識してくれなかった.
Zipならおそらく既知平文攻撃だろうということと, PkCrackを使えばよさそうという情報はあったので, 適当に遊んだ.
まずはPkCrackをビルド:
% cd tmp/
% wget https://www.unix-ag.uni-kl.de/~conrad/krypto/pkcrack/pkcrack-1.2.2.tar.gz -O - | tar zxv
% cd pkcrack-1.2.2/src
% make
とくに問題なくビルドはできた.
既知平文についての情報を得るために, 解凍しようとしてみる:
% unzip /vagrant/unzip.zip
Archive: /vagrant/unzip.zip
[/vagrant/unzip.zip] backnumber08.txt password:
もちろんわからないので空のままEnter:
skipping: backnumber08.txt incorrect password
skipping: backnumber09.txt incorrect password
skipping: flag incorrect password
backnumber0?.txt
というファイルがすぐ見つかるのだろうと思ってググったら, どうやらSECCONメルマガのバックナンバーのようだったので, このファイルでZip書庫を作成してPkCrackに渡した:
% cd ../
% zip backnumber09.zip backnumber09.txt
% src/pkcrack -C /vagrant/unzip.zip -c backnumber09.txt -P backnumber09.zip -p backnumber09.txt -d /vagrant/decrypted.zip
めでたく/vagrant/decrypted.zip
が作成されたので解凍. flag
ファイルの素性は
% file flag
flag: Microsoft Word 2007+
とのことだったので, 適当に改名してWordで開く: 白文字に設定されていただけだった.
ISOファイルをVirtualBoxに渡して起動したら, なんとなくLinuxが起動したので, とりあえずdmesg
したが,
$ dmesg
dmesg: applet not found
つれない返事だった. あまりBusyBoxとかappletなるものはよくわからないけど, 多分この環境のBusyBoxはdmesg
を有効にされてないんだろうな, と思った.
dmesg
以外でもどうにかすればメッセージバッファを確認できたよな……と思ってまず/var/log
を見たけど何もなかった. 次にls /dev/
とかしてたら/dev/kmsg
なるスペシャルファイルがあったので, これをless
した.
どうやらそれっぽい. ここにフラグがあるんだろうなと思ったので, SECCON
で検索をかけた: