SECCON 2015 オンライン予選 write-up
はじめに
SECCON 2015 オンライン予選にぼっちチームhoge444として出てた。
競技開催期間は2015年12月05日(土) 15:00:00(JST)から24時間。
実質2問しか解けなかった。
Title | Genre | Points |
---|---|---|
Start SECCON CTF | Exercises | 50 |
SECCON WARS 2015 | Stegano | 100 |
Connect the server | Web/Network | 100 |
Last Challenge (Thank you for playing) | Exercises | 50 |
Start SECCON CTF
問題文
ex1 Cipher:PXFR}QIVTMSZCNDKUWAGJB{LHYEO Plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ{} ex2 Cipher:EV}ZZD{DWZRA}FFDNFGQO Plain: {HELLOWORLDSECCONCTF} quiz Cipher:A}FFDNEVPFSGV}KZPN}GO Plain: ?????????????????????
解法
置換表がex1で与えられているのでPythonのstring.maketransを使って変換テーブルを作る。
#!/usr/bin/env python2 # -*- conding: utf-8 -*- import string cihper = 'A}FFDNEVPFSGV}KZPN}GO' table = string.maketrans('PXFR}QIVTMSZCNDKUWAGJB{LHYEO', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ{}') print cihper.translate(table)
trコマンドでも解ける。
$ echo "A}FFDNEVPFSGV}KZPN}GO" | tr PXFR}QIVTMSZCNDKUWAGJB{LHYEO ABCDEFGHIJKLMNOPQRSTUVWXYZ{} SECCON{HACKTHEPLANET}
FLAG:
SECCON{HACKTHEPLANET}
Connect the server
問題文
login.pwn.seccon.jp:10000
解法
まずncコマンドで接続を試みる。
WireSharkで通信を監視して適当にFollow TCP StreamするとFLAGっぽいものが見える。
FLAG:
SECCON{Sometimes_what_you_see_is_NOT_what_you_get}
SECCON WARS 2015
問題文
https://youtu.be/8SFsln4VyEk
解法
[追記]
よくよく考えたらgifをそのままPythonで処理すればよかった。
- Youtubeからmp4の動画をダウンロードし
Free Video to GIF Converter
で動画の00:25から01:05を切り取ってhoge.gifに変換(このときフレームレートは2 fpsで幅は600pxぐらいにするとよい)
#!/usr/bin/env python #-*- coding: utf-8 -*- from PIL import Image gif = Image.open('hoge.gif') width, height = gif.size png = Image.new('RGB', gif.size, 'black') while True: gif.load() for pos in ((x, y) for x in range(width) for y in range(height)): if gif.getpixel(pos) < 0x80: png.putpixel(pos, (0xff, 0xff, 0xff)) try: gif.seek(gif.tell() + 1) except: break png.save('flag.png', 'PNG')
[ここまで追記]
ひどい解き方をした。手順は次の通り。
youtubeから、問題の動画をダウンロード
Free Video to GIF Converterで動画の00:25から01:05を切り取ってhoge.gifに変換(フレームレートは1fpsにした)
convertコマンドで分離
$ convert +adjoin hoge.gif fuga.gif
(最初まっ黒な画像を作って読み込んだgifに白いところがあったら白を描画してる)
※このコードは汚いだけでなくて実行時間もかなりかかるので色々とひどい。
- flag.png
- 最後にQRコードを読み取るとFLAGが分かる。
FLAG:
SECCON{TH3F0RC3AVVAK3N53P7}
Last Challenge (Thank you for playing)
問題文
ex1 Cipher:PXFR}QIVTMSZCNDKUWAGJB{LHYEO Plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ{} ex2 Cipher:EV}ZZD{DWZRA}FFDNFGQO Plain: {HELLOWORLDSECCONCTF} quiz Cipher:A}FFDNEA}}HDJN}LGH}PWO Plain: ??????????????????????
解法
最初の問題と同じ。
$ echo "A}FFDNEA}}HDJN}LGH}PWO" | tr PXFR}QIVTMSZCNDKUWAGJB{LHYEO ABCDEFGHIJKLMNOPQRSTUVWXYZ{} SECCON{SEEYOUNEXTYEAR}
FLAG:
SECCON{SEEYOUNEXTYEAR}
おわりに
問題は全然解けなかったけど、時間はたくさん溶けた。とても辛かった。