ctf4b(CTF for ビギナーズ)滋賀に参加した感想とwrite up のようなもの

10/3に滋賀県立命館びわこ草津キャンパスに行ってctf4bに参加してきました。
京都から電車を使って南草津駅まで行ってバスに乗り立命館大学まで行ったのですが、キャンパス超広い。。。
中で早速迷いまして、ぶらぶら歩いていると案内の人が立っていたので安心しました。
会場につくともうすでに人がたくさんいたんですが、講義が始まるころにはすごくたくさんの人が集まっていました。
個人的に驚いたのは、学生ばっかりだと思っていたんだけど結構年齢層が広かったことです。
講義の内容はバイナリとネットワークでした。僕はwebの講義も受けたかったです。
バイナリは結構知っていることが多かったのですが、ネットワークは始めて知ることが多くとても楽しかったです。
どちらの講義でもツールの使い方を丁寧に教えてくださって、とても実践的でした。
講義が終わるとCTFが始まりました。講義で聞いたことをそのまま使ったり、少しの応用だけで解ける問題が多かったのでわりと何問かはするする解けました。
一瞬前のモニターに僕の名前が乗ってたときはテンション上がりました。(すぐ消えたけど、、)
結果は1000点でした。自分的には結構いい方だったと思います。ただ、web問は事前の資料を配布されたにもかかわらずまったく読んでいなかったので一問も解けなかったことが残念でした。勉強してたらあと300点くらいは取れたんじゃないかなー(言い訳)

write upのようなもの

CTFの後には答え合わせがあったのですが、このブログでは答え合わせされなかったけど僕が解けたbinary300の解法を載せようと思います。
まず、この問題はbin300という拡張子なしのファイルが渡されます。とりあえずfileコマンドで調べるとどうやらexeであることが分かります。これをコマンドライン上で実行すると
"Oh,you input wrong answer"
というメッセージボックスが出されます。何なのかよく分かりませんが、とりあえずIDAで開いてみると最初の処理から__wrongと言う関数にジャンプしていることが分かります。
f:id:orangeeee:20151004234724p:plain
どうやらこの関数に当たると失敗という感じらしい。別の分岐先でもジャンプ命令が存在しその分岐先に__wrong関数があります。それが何段かありました。そして下の方を見てみると、__answerという関数があります。
f:id:orangeeee:20151004234735p:plain
まあ、ジャンプ命令のところでsetipをたてて、ジャンプ先を変更し、__answer関数までたどり着ければフラグが出るんだなと予想をつけやってみる。
f:id:orangeeee:20151004234733p:plain
途中ジャンプ先を変更して、次のジャンプ命令まで実行しようとすると変なエラーが出て先に進めなかったのですが、次のジャンプ命令の上で右クリックをしてsetipをたてていくと、一番下まで進んでいき__answer関数を実行するとフラグがでできました。
こうしてみるとそんなに難しい問題ではなかったのですが、ツールの使い方が分かってるかどうかってところですね。(エラそうにいってるけど僕まったく使えませんw)



今回の勉強会は僕のレベルにすごく適していたと思いますしすごく楽しめました。
またこれからも様々な勉強会やCTFなどに挑戦していこうと思います。