SECCON2016 Online予選に参加しました
こんにちは。
SECCON2016 Online予選に参加してきました。その報告(WriteUp)となります。
状況
初CTF参加。
セキュリティ知識なし。
勉強期間・内容
ksnctfの100点以下の問題を中心に問いてました。
解けたのは4問でした。
期間は2週間ほどでしたが、学校の提出物などもあり、がっつりは勉強できなかったです。
当日
当日は用事があり、23時頃からの参加でした。
最初は、Cipher問題の「Backpacker's Capricious Cipher」に挑戦しましたが、Rubyの知識がなく、勉強と共にトレースをしていました。が、いきなり「flag.txt」を読み込んでいたり、範囲処理がうまく理解できずに諦めることになりました。
次に取り掛かったのが「cheer_msg」です。今回はpwnの嵐で、pwnの知識も全くないため勉強と共に解いてました。
まず、「fileコマンド」で「ELF」だと判明。しかし、実行できないので、調べてFreeBSD環境でのみの実行ファイルだと判明し、「TUKUBAI FreeBSD」を構築。実行し、引数に負の数を渡すと、メモリの中身?のようなものが文字化けして表示されていました。そのため、「-1〜-10000」の値を引数として渡して実行する「総当り攻撃」のようなことを「Netcat」をいれ、サーバー内で実行。特に成果はなく、唯一同じ引数を渡しても出力結果が変わるということがわかりました。
今度は「gdb」をいれ、変数を一個ずつ見ました。が「gdb」の使い方がわからず、問題なく処理が終わると変数が初期化?されて「レジスタにない」という表示がでました。「$esp」の値が変動しているところまでわかりました。また、mainの番地?「0x80なんたら」のような表示が出ることも把握したところで、タイムアップ。
結果
自分が獲得したポイントは0。
チームは約上位30%でした。
感想
バイナリやアセンブラの勉強をまったくしていなかったので辛かったです。全ての問題がちんぷんかんぷんでしたが、「これかも?」というところから意図をたどるような感覚は楽しく、また今まで触れたことのない知識にわくわくしながら参加できました。
また、24時間の大会ということもあり、みんなのテンションがおかしくなっていくのも楽しめる要因でした。
ctf楽しいです!自分としては1ヶ月に1回参加してもいいな!という感じです。