5/15(日)にctf4b@長野に参加してきた
ctf4b 長野やで pic.twitter.com/SXnSuYfMGd
— すらいむ! (@taiyoslime) 2016年5月15日
長野県民としてこれほど嬉しい企画はない。
SECCONメルマガで「ctf4bを長野で開催する」という通知が届いてから5分で応募完了し、その日から非常にわくわくしていた私は当日意気揚々と長野市に向かった。
参加者の方は自分含めみんな長野の各地の山奥からのそのそ集結するんだろうなあと勝手に想像していたのだが、実際遠方からの参加者も多くいて驚いた。
講義はReversing,Web,Forensicsの3つを受けることができた。 思ったことをざっくりとまとめておく。
Reversing
Web
OSコマンドインジェクションだったり、PHPのis_numeric()の謎挙動、include()が生む脆弱性について等の講義だった。
面白かったのは、PHPのType Confusionのお話
PHPでは期待しない型の引数が与えられたときNULLを返す関数の仕様が多い。例えばstrcmpもそうなのだが、PHPでは NULL == 0 => tureなのである。strcmpは比較した結果が等しい時も0を返すため、これでパスワード等を比較していると脆弱性を生む原因になるみたいだ。Forensics
パケット解析をWireSharkで各ペインだったりフィルタだったりの使い方、TCP StreamとかProtocol Hierarchyの見方の説明を受けながら、実際に使ってみる感じだった。
ファイル調査では、fileコマンドでは抽出できない入れ子ファイルの抽出はbinwalkでできるということを知った。
個人的に一番楽しかった。
最後にミニコンテストのようなものを1時間ぐらいした。 誰がが旗取った時に「ピコーンピコーン!!」となるのが非常に新鮮だった。
結果は6位だった
上から順番に解こうとしたため、難しい問題で時間を溶かした挙句最後に位置していたバイナリ問まで辿り着くのにかなり時間がかかってしまった。
数カ月前のJOI本選の教訓がまったく活かせていない。
今までは極めて牧歌的に、バイナリ眺めて全挙動を把握しきってから問題にとりかかるーーーということをしていたのだが
実際限られた時間の中で旗取るのにそんなことをしているのは明らかに無駄、いう極めて当たり前のことに気づけていなかった。
本当はWriteupなるものを書いてみたかったのだが、自分の作業の痕跡があまりにぐちゃぐちゃすぎたのでやめた。
これから少しづつOnline CTF等に参加しつつ実践経験を積んでいきたい。