ふるつき

v(*'='*)v かに

ctf for ビギナーズ 滋賀

f:id:Furutsuki:20151003173419j:plain

writeupです。3500ptで1位でした。 f:id:Furutsuki:20151003202110p:plain

misc 100

FLAGをこぴってぺってする問題でした。

net(work) 100

pcapファイルが転がってます。どうやらtelnetしているようです。Follow TCP Streamすると、ログインパスワードが平文で見れて、これがFLAGでした。

net 200

pcapです。またtelnetしていて、今度はログイン後に向こうからFLAGが送られているようですが、FLAGが見えないようにつぶされています。Destをみてtelnetして、follow tcpでユーザ名とパスワードを入れたらFLAGがとんできました。

net 300

pcapです。問題の名前がFTPっぽい名前だったと思うのでFTP見ようと思ったのですがFTP-dataというプロトコルもいて、ネットワーク講義でこれをやったのでじゃあこっちだということでfilterにftp-dataと入力。4つのパケットが見えます。 ひとつめはlsコマンドのログのようになっていて、1.txt 2.zip 3.txtがあります。その後のみっつはこれらを送信しているようでした。2.zipは解凍してから、1,3はそのままにして順番につなげるとFLAGみれました。

net 400

exeが渡されました。実行するとキャプチャ中のwireshark(ずっとキャプチャしてた)にひっかかるパケットがあって、そいつをみたら解けました。せっかくキャプチャしたのに保存せず捨てたので他になにか必要な作業があってもわかりません。

net 500

とけてないです。というか誰も解けなかったようですが、作問者からネタバレがありました。pcapが渡されるのですがWireSharkで開けないです。どうやら頭がビッグエンディアンになっていたらしく、これをリトルエンディアンにすると開けます(これはfileコマンドで判明するらしくてやばい)。pcapの中身はIRCによる通信の様子で、そのpcapの通りにIRCサーバに接続してチャンネル選んで特定のメッセージを送るとFLAGが手に入るらしいです。ところが今回はそのIRCサーバのIPに誤りがあったようです。pcapをWiresharkで開けるようにするところまでたどり着いた方はそれなりにいたようですすごい。

web 100

よくおぼえてないですが、多分'OR '1' = '1とかしました。

web 200

完全にわすれた。もしかしたらweb 400って書いてあるのがこれかもしれない。

web 300

ORがつかえないSQLiの問題だったはず。ORの代わりにOORRと書いてあげると通ります。だから' OORR '1' ='1でFLAGでる。

web 400

解説を求められて解説しようとして結局わからないですねと言った問題。画像のuploaderだったのですが、画像をプレビューできて、GETパラメータからディレクトリトラバーサルするとindex.phpとかが読み込めて、そこにコメントとしてFLAGが書いてあったはずです。

web 500

言語ごとにページが切り替わるサイト。GETでjpとかenとか指定していたのでindex.phpしたけどindex.phpは弾かれて、php://filter/convert.base64-encode/resource=index.phpするとbase64されたindex.phpが手に入ります。decodeするとFLAGがてにはいります

binary 200

画像ファイルで、FLAGがかいてあるらしいのですが何も考えずにstrings | grep ctf4bしたらFLAGでてきました。画像はわたあめさんという方のアイコンで、日本を代表する目grepperです。フラグの内容も、Are you MeGrepper?みたいな感じだったと思います。

binary 300

fileコマンドしたらexeだというのでexeとして実行します。するとwrongとか言われるのでIDAで見ます。wrongという文字列で検索したら(文字列の検索はAlt+Tです)、となりにFLAGっぽい文字列を表示するブロックがあって、そいつへの道筋を上へ上へと辿って行くとコマンドライン引数を見ているようで、ctf is funとかそんな感じに打つとFLAGとれたと思います。

binary 400

ちょっと残ってないですが、問題名はCalc It!で、intel記法のアセンブリを脳内で実行する問題でした。頑張ってpythonにして解きました。

a = 0
b = 0

while(True):
    if (b >= 0xc8):
        break
    t = a
    t += b
    a = t
    s = a
    s -= 0xa
    a = s
    eax = b
    eax += 1
    b = eax

print(a)

感想

 80人近く参加していたCTFでしっかりたたかえたのでとても嬉しいです。