ひよこになりたい

Programming Server Network Security and so on

SECCON 2014 quals Online 重ねてみよう Writeup

SECCON 2014 quals Onlineに参加しました。今回はビギナーでも解ける問題をたくさん出題されるということで、少しは貢献できるかな?と思いましたが、人権消滅しかけてます。

チームはwasamusumeです。今回もチームメンバーの皆さんがスパッと解決していました。すごい。

amidaも中途半端だし、他の問題はメンバーさんが強すぎてタイミングなかったので本当は呼吸Writeupになりそうだったんですが、スキマを縫ってFlag提出したものがあるので書いておこうと思います。

Prog100

重ねてみよう
ジャンル:プログラミング
点数:100
問題文:afterimage.gif

afterimage.gifがもらえるので、開くとGIFアニメのよう。

f:id:zipsan:20150214060921g:plain

どう見てもQRコードなので、Pythonスクリプト書きました。

# -*- coding: utf-8 -*-  
from PIL import Image  
  
X = 164  
Y = 164  
canvas = Image.new("RGB", (X, Y), (255, 255, 255))  
  
for i in range(1, 50):  
    print("img/img_{0:02d}.png".format(i))  
    base = Image.open("./img/img_{0:02d}.png".format(i))  
    pixels = base.load()  
    for x in range(X):  
        for y in range(Y):  
            if pixels[x, y] == 1:  
                canvas.putpixel((x, y), (0,0,0))  
  
canvas.save('ans.png', 'PNG')  

GIFアニメを適当なツール(今回はGiam)でつるっと抽出して、img/ディレクトリに保存。

PILライブラリを使って一個一個開きつつ、白い部分だけキャンバスに転写していきます。(上のスクリプトは白い部分を黒にして転写しています)

前回の記事や他のCTFで予習してたので調度良かった。

f:id:zipsan:20150214061125p:plain

出力がこれです。読み取ると

FLAG{Many dot makes a QR code}

がでました。

 今回はいくつかの問題しか手を付けていないので、復習しておかなきゃなと思ってます。

とくにあみだくじはめちゃくちゃ悔しいのでリベンジしておきます!解けたら記事にしようかな。