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

ふるつき

記事と内容がないです

ctf for ビギナーズ 滋賀に行ってきました

f:id:Furutsuki:20151003173419j:plain

簡易CTFでは優勝しました。


いわゆるctf4bに初めて行きました。そうなんども行くものでもないと思いますが。

ctfとは、とか

 そもそもctfってなんぞや、とか。ctfとかやってると攻撃したくなるかもだけど倫理考えてね、とか。

バイナリ講義

 いわゆる親方のお話です。IDAでバイナリを解析しました。動的解析を知りました。

ネットワーク講義

 サメの方のお話でした。かなりスパルタだったように感じました。みっつほどpcapファイルを解析しました。「このへんが__なのであやしい」とか言ってちゃこちゃこ解析している様子に圧倒的な差を感じました。

簡易ctf

 もやりました。冒頭で述べたとおりに3500ptで1位でした。 f:id:Furutsuki:20151003202110p:plain

 主観的に見ても客観的に見ても圧倒的に見える……。と、いうのも何問かは、私は既知でした。ctf4b熊本に言った知人から話を伺ってしまっていたので。

 私はそんなに頭の出来が良くなくて、答え合わせでも解いた問題を解説しろと言われて間違えたのですが、覚えている限り朧にWriteUpします。忘れてたら解き直します。

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 100

問題名が「うる星やつら」。高橋留美子さんは大好きなので是非解きたかった=解けなかった。bin100とかいうファイルが落ちてきて、fileしたらなにかのディスクで、そのなかにflagとかいうMicrosoft Cabinet Archiveみたいな種類のファイルがいます。これを解凍すると(なんと.cabをつけるだけでWindowsが解答してくれるようになるのです。知らないよそんなの)、zipがでてくるのでZip剥がせばよかったはずです。しつこいまでにfileコマンドをしてかつ、.cabをしっていると解けるようです。

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)

binary 500

問題名は確か「だっちゃ」。ラムちゃんですね。解きたかった=解けなかったやつです。これを書いている時点でもうWriteUpが上がってました。

github.com

詳細さっぱりなので解いたら書きます

以上、4600点満点位だと思います。Web500なんかは完全に知らなかったらとけなかった問題でした。妨害コンテンツ(上原哲太郎先生!)に気を取られず、解けなさそうな問題には見切りをつけてstringsとwiresharkを振り回したのが良かったと思います。

感想

 80人近く参加していたCTFで、他のプロフェッショナル級な方々に対してしっかりたたかえたのでとても嬉しいです。これもひとえに師匠のおかげさまです、ありがとう。

 私はもうビギナーではなかったのかもしれないなどと慢心しています。

 最初にWeb問題をときにかかったのですがサーバ側のあれこれでIncorrectと言われ続けて泣きそうでした。

 せっかくハリネズミ本(蟻本と違って言い難いですね。残念)を頂いたにもかかわらず、サインをもらい忘れたのは完全に失敗でした。つら。

おしまいに

 運営の皆様、会場を提供してくださった同志社大学様、ありがとうございました。それから、参加者の皆様や師匠や旧友やいろんなところで出会った方々のおかげで"""優勝"""という人生最高の称号を手にしました。ありがとうございます。ここが私の人生の一番はなやかな時期でしたと言うことのないようにがんばります。


 追記(消した)