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

sonickun.log

備忘録

CTF for Beginners 2nd | 感想とWrite-up

 第2回 CTF for Beginnersに参加してきたので忘れないうちに感想とWrite-upを書きます。参加者の中にはNot Beginnerも紛れ込んでいたようですが、自分はCTFを今年の4月に始めたので正真正銘のBeginnerです。

f:id:sonickun:20140706194301p:plain
f:id:sonickun:20140706194308p:plain

 講義は CTFとは, Binary, Network, Webの4つに分かれていたのでそれぞれについて感想を書きます。

 

CTFとは?

 みむら氏(僕の中では有名人)がCTFとは何かについて丁寧に説明してくださいました。
 CTFを通してハッキングの技術を学ぶわけですから、それを悪用しないよう一人ひとりがしっかりとしたリテラシーを持つことが大事だと強調していました。
 
 

ご注文はバイナリですか?

  • 印象に残った言葉:「fileコマンドはビールみたいなもの」

 居酒屋に入ったらとりあえずビールを頼むように、ファイルを渡されたらとりあえずfileコマンド打っとけっていうことです。
 
 前半は、うさみみハリケーンとIDA proの説明とデモをしてくれました。うさみみハリケーンはつい最近CTFで使ったところでした。
 IDA proも前から使ったことはあったのですが、バイナリを書き換えて条件分岐を変更してファイルとして出力する方法は知りませんでした。ちなみに今までは、Break Pointを用いてレジスタの中身を書き換える方法で問題と解いたりしていたので、この2つの手法をうまく使い分けていきたいです。

 後半はプログラム実行の仕組みについての説明でした。ここらへんがしっかり理解できていればバイナリ問題も楽に解けるんだろうなあと思いました。


パケットフレンド(仮)

  • 印象に残った言葉:「NetworkMinerは邪道」

 NetworkMinerでできることは全部WireSharkでできるんだからWireshark使えよってことでしょうね。

 ほよたか氏(僕の中では有名人)のネットワークの講義でした。Wiresharkに対する愛がひしひしと感じられました。自分も研究でWiresharkはよく使いますが、統計ツールの話はためになりました。僕もこれからいろんなfilterを使ったりしてパケットと戯れていきたいです。


猫でも分かるXSS, これなら分かるSQLi入門の入門

  • 印象に残った言葉:「ブラウザさえあれば世界を変えられる」

 ややこしいツールを使わなくても、XSSやSQLiなど、ブラウザさえあればハッキングできるんだぞということです。「CTFは脆弱性のサファリパーク」と言っていたのも面白いなあと思いました。

 やぎはしゅ氏(僕の中では有名人)のWebの講義でした。まず、自分と同じ学部生の方だったとは思わなかった(笑)。技術もプレゼン力も素晴らしかったです。XSSソースを辞書登録を登録してたり、MacのDockにTorブラウザ置いてたり、筋肉ムキムキだったりで、ヤバい人だなぁと思いました。

 XSSの仕組みの説明はとても分かりやすかったです。Cookieを盗むデモもしてくれましたが、早すぎて(XSS文が0.1秒くらいで出てきた)何をしてるのか正直わかりませんでした。
 SQLiはCTFで少しやったことはありましたが、UNIONを使ってテーブルを引っ張りだす方法や、テーブルのスキーマ情報を得る方法(sqlite_masterとか)は初めて知りました。なぜかブラインドSQLiの手法は知っていたので、もしこの講義を聞いてなったらブラインドSQLiでテーブル名やカラム名を探すことになっていましたね…(笑)

簡易CTFのWrite-up

 今回のCTF for Beginnersで楽しみにしていたのが簡易CTFです。もし第3回があるとすれば参加者の方にはネタバレになってしまうおそれがあるので注意してください。

 Binary, Network, Webの問題が合わせて10問くらい出題されました。解答時間が45分だったのですが、これが正直短かった(笑)。良問が揃っていただけに、全部の問題に目を通すことすらできなかったのが残念でした。
 
 今回は4問ほど解けたので、そのWrite-upを書きます。しかし、あまりに時間がなくてスクショを撮ったりする余裕もなく、問題の名前すら覚えていないので、そこら辺適当になってしまいますがご了承ください。

1問目:SQLiの100点のやつ

 これはサービス問題。最も基本的なSQLiをしておわりです。

' or 1=1;-- 


2問目:SQLiの200点のやつ

 今回教わったUNIONとsqlite_masterを有効に使いました。

' or 1=1 union select sql,1,1 from sqlite_master;--

 これでテーブル名(users_hogefuga)とカラム名(passwordとname)がわかったので後はやるだけ

' or 1=1 union select password, name, 1 from users_hogefuga;--


3問目:Binaryの100点のやつ

 拡張子の無いファイルが渡されるのでfileコマンドを打ったらWordファイルだということが分かりました。そこで拡張子を.docにリネームして開いたらフラグ出現。
 
 

4問目:Bynaryの100点のやつ

 また拡張子のないファイルが渡されるのでfileコマンドを打ったら「data」とだけ。つぎにstringsコマンドを実行したらフラグが1行だけ出てきました。
 
 

解けなかったやつ

 Networkの問題が解けなかったのが悔しかったです。とくにベーシック認証の問題は解きたかった。あとはTELNETのパケットからユーザ名とパスワードが得られてそれがフラグだと思っていたら、実は接続先のサーバが生きていてその先にフラグがあったり。完全に焦っていたせいで頭が回りませんでした。
 あとは、終了直前まで300点のBinaryの問題を解いていたのですが、あと少しといったところでした。後でゆっくり解いてみます。
 
  
 だいぶ適当なWrite-upになってしまい申し訳ありません、、
 

 

簡易CTFの結果

f:id:sonickun:20140706202139p:plain

 100人位いたと思いますが、6位でした。最後の300点問題が解けてさえいれば、、、、、といったところです。競技中に運営さんたちが「Beginnerじゃない人がいる」と騒いでいらっしゃいましたが、そのなかで6位を取れたのはまぐれだと思います。
 もう問題も開けないので、僕が解いていない問題のWrite-upを誰かが書いてくれることを願います。
 
 
 

まとめ

 今回のCTF for Beginnersに参加して、本当に良かったと思います。いろいろ勉強になりましたし、なにより楽しかったです。講義もとても濃い内容だったので、あとで資料を熟読して頭を整理する必要があろうかと思います。併せて、紹介していただいた書籍やツールもチェックしてみようと思います。今月のSECCON予選のモチベーションにもつながりました。
 改めてCTF for Beginnersの運営の方々に感謝申し上げます。

おまけ

 最後に、今回のCTF for Beginnersに先立って配布していただいたツールキットを紹介します。どれもフリーソフトですが、これだけのものを揃えていただけたらお金を払う価値もありそうな気がします(笑)。当日すべてのツールを使ったわけではないので、まだ使ったことのないツール(スペシャねこまんま57号とか)はあとで試してみようと思います。