Sionの技術ブログ

SREとして日々の学習を書いて行きます。twitterは@sion_cojp

VolgaCTF 2015 : 100 - poemのwriteup

手探り

### ファイルを落として、調べてみる
$ wget http://files.2015.volgactf.ru/poem/poem.pdf
 
### ファイル形式でだまされないように、ちゃんと確認。
$ file poem.pdf
poem.pdf: PDF document, version 1.5

ちゃんとpdfでした。

中身を見てみる

行間が怪しい。バーコードか。ってことは2進数か。ASCII変換か。
改行してないものを0、改行を1として調べて行く。

f:id:sion_cojp:20150514200830j:plain

地味な作業。
なんか途中で9bit部分が出て来た。ページじゃなくて全体としてビット数を数えていくっぽい。
とりあえずhttp://d.hatena.ne.jp/kobapan/20081225/1230156733 に当てはめて行く

{siz

まで読めたが、次から読めなかった。
文末か文頭にビットが入るのかな?
文末に0が入る事にしてみると、全て8ビットに入れ替わったページをまたぐ部分は米印を入れている

{ 01111011
s 01110011
i 01101001 
z 01111010
e *01100101
_ 01011111
d 01100100
o 01101111
% *00100101
s 01110011
_ 01011111
m 01101101
A *01000001
t 01110100
t 01110100
e 01100101
r *01110010
_ 01011111
a 01100001
f 01100110
p *01110000
e 01100101
r 01110010
_ 01011111
` *01100000
l 01101100
l 01101100
~ 01111110

うむ。{で始まってるのに、}で終わってない。
最後は01111101になるべきだ。ということは文末は0or1で正しく出力出来た方か。
というかこの段階でなんとなくキーは予想出来そう笑

完成品

ASCII 2進数
{ 01111011
s 01110011
i 01101001
z 01111010
e ページまたぎ 01100101
_ 01011111
d 01100100
o 01101111
e ページまたぎ  01100101
s 01110011
_ 01011111
m 01101101
a ページまたぎ 01100001
t 01110100
t 01110100
e 01100101
r ページまたぎ 01111000
_ 01011111
a 01100001
f 01100110
t ページまたぎ 01110100
e 01100101
r 01110010
_ 01011111
a ページまたぎ 01100001
l 01101100
l 01101100
} 01111111

答え

{size_does_matter_after_all}