DEFCON CTF 2009 Forensics 200
Provide the key in its original, unl33t form.
http://shallweplayaga.me/forensics/70b06421d874ba02b7b50f575759cff7
まず何のファイルか確認
$ file 70b06421d874ba02b7b50f575759cff7 70b06421d874ba02b7b50f575759cff7: gzip compressed data, from Unix, last modified: Wed Jun 3 03:19:02 2009
gzipで圧縮されている
$ tar xvf 70b06421d874ba02b7b50f575759cff7 key.doc ~426tmp.emf $ file * key.doc: Vim swap file, version 7.4 ~426tmp.emf: ASCII text
2つのファイルが展開される
key.docはvimのswapファイル、~426tmp.emfはテキストファイル
とりあえずswapファイルから元のファイルを復元
http://nanasi.jp/articles/howto/file/crash-recovery.html
元ファイルのファイル名は~426tmp.emfに書かれてある
$ cat ~426tmp.emf | more ... # File marks: '0 44 0 ~/findthekey # Jumplist (newest first): -' 44 0 ~/findthekey -' 2239 0 ~/findthekey -' 2234 0 ~/findthekey -' 1 0 ~/findthekey # History of marks within files (newest to oldest): > ~/findthekey " 44 0
元ファイル名がfindthekeyだったと仮定して
swapファイルから元ファイルを復元
$ cp key.doc findthekey.swp $ vi findthekey.swp b0VIM 7.4^@^@^@^@^P^@^@ai%J^E ^H^@nm^@^@hackerj^@^@^@^@^@^@^@^ @^@^@^@^@^@^@^@^@^@^@^@localhost.localdomain^@^@^@^@^@~hackerj /findthekey^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^ @^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^ ... ... ... ... :recover(":recover"と入力) スワップファイル "findthekey.swp" を使用中 "~hackerj/findthekey" [新規ディレクトリ] >>>>>>>>>>>>> E312: リカバリの最中にエラーが検出されました; ???で始まる行を参照してください 詳細は ":help E312" を参照してください >>>>>>>>>>>>> 続けるにはENTERを押すかコマンドを入力してください (Enterを入力) (0mp4r1n9 73h53 3><4mpl35 w17h 73h1r p4r45171( 94p (0un73rp4r75 1n (96) & (97), w3 533 |>47 73h 5y573m471( u53 0f (0mpl3>< 5ym80l5 i$ n3(3554ry 70 1mp053 4n 1n73rpr3741Ng 0n 4 p4r45171( 94p (0n57ru(1Ng. 17 4pp34r5 |>47 73h 4pp34r4n(3 0f p4r45171( 94p5 1n |>0m41n5 r3l471\/3ly 1n4((35518l3 70 0r|>1n4ry 3><7r4(1Ng |>035 n07 4ff3(7 73h 57ru(7ur3 0f 73h 5y573m 0f 8453 rul35 3><(lu51\/3 0f 73h l3><1(0n. 8y (0m81n1n9 4|>jun(1Ng5 & (3r741n |>3f0rm41Ng5, 73h 5p34k3r-h3rr'5 l1n9ui$71( 1n7u11Ng 5uff1(35 ..... ..... :w recover.txt(別名でファイルを保存)
次に~426tmp.emfを見るとコマンドライン入力履歴に置換した後がある
// ~426tmp.emf # Command Line History (newest to oldest): :wq :%s/thekey->//g :%s/15/i$/g :%s/710n/1Ng/g :%s/n00b/N1nj4/g :%s/455/A$$/g
recover.txt内で上記の逆の置換を行う
$ vi recover.txt (0mp4r1n9 73h53 3><4mpl35 w17h 73h1r p4r45171( 94p (0un73rp4r75 1n (96) & (97), w3 533 |>47 73h 5y573m471( u53 0f (0mpl3>< 5ym80l5 i$ n3(3554ry 70 1mp053 4n 1n73rpr3741Ng 0n 4 p4r45171( 94p (0n57ru(1Ng. 17 4pp34r5 |>47 73h 4pp34r4n(3 0f p4r45171( 94p5 1n |>0m41n5 r3l471\/3ly 1n4((35518l3 70 0r|>1n4ry 3><7r4(1Ng |>035 n07 4ff3(7 73h 57ru(7ur3 0f 73h 5y573m 0f 8453 rul35 3><(lu51\/3 0f 73h l3><1(0n. 8y (0m81n1n9 4|>jun(1Ng5 & (3r741n |>3f0rm41Ng5, 73h 5p34k3r-h3rr'5 l1n9ui$71( 1n7u11Ng 5uff1(35 ..... ..... :%s/i$/15/g (入力) :%s/1Ng/710n/g (入力) :%s/N1nj4/n00b/g(入力) :%s/A$$/455/g (入力)
置換完了!
さらに~426tmp.emfを見るとマークした履歴がある
// ~426tmp.emf # History of marks within files (newest to oldest): > ~/findthekey " 44 0 . 44 0 + 11 0 + 3 0 + 2 0 + 44 18
最後に44 - 18とあるので、44行目の18文字目と考えて
置換後のrecover.txtの44行目、18文字目を確認
$ cat -n recover.txt | more ... 43 n07 r34|>1ly 70l3r473 n035n|>i$71n(7n355 1n 73h 53n53 0f | 44 73h0ry. f0r 4ny 7r4n5f0rm4710n wh1(h i$ 5uff1(13n7ly |>1\/ 45 4ppl1(4710n 70 83 0f 4ny 1n73r357, 73h 73h0ry 0f 5yn74(71(
44行目の18文字目以降は"7r4n5f0rm4710n"となる
これを問題文にあるようにunl33tする(l33tをOFFにする)と
"Transformation"となり、これが答え