セキュリティ完全初心者がCTF入門して半月が経ちました
記事を開いてくださったみなさんようこそ。
ぴーよです(*- -)(*_ _)ペコリ
年末年始にかけて異様になぜかモチベーションが高くて勢いで前から気になっていたCTFを始めてしまいました。
初心者だった時の気持ちは脱初心者すると忘れてしまうとよく聞くので、覚えているうちにわかったこととか参考にしたものとかを時系列順でまとめておこうと思います。
CTFとは
おそらくこの記事を目にしている方の大半は知っていると思いますが一応。
CTFは"Capture The Flag"の略で、『与えられた問題からFlag(旗)をゲットすることを目的とした競技です』みたいなことがググると出てきます。
旗っていうのはほんとに旗があるわけじゃなくて、決まった形の答えの文字列*1がいろんな方法で隠されててそれを旗と呼ぶっぽいです。
例えば"FLAG{~}"みたいな形式の文字列がどこかに隠されてるから見つけてきてね見たいな感じです。
始める前は旗の画像が隠されてるのかと思ってました。
長々と書きましたが簡単に言うとハッキングの競技です。
実際にどんな感じなのかは琴葉姉妹と学ぶハッキングシリーズの動画を見ると雰囲気がつかめます。
www.nicovideo.jp
やり始めたとき 12/26
とりあえずこの記事を読みました。
kinako-mochimochi.hatenablog.com
この記事はCTFにはどんなジャンルの問題があってどういう本で勉強すればいいのかがまとまっているのでとても助かりました。
後、いわゆるいきなり崖から突き落としてきて這い上がってこれる奴だけついてこい的な記事も多い中、すごく初心者に寄り添って記事が書かれているのもよかったです。
気が向いたから前々からちょっと気になってたネットゲームであるところのCTFに入門してる
— ぴーよ (@ywmt_kpr) 2019年12月26日
cpawCTFを埋める 12/26 ~ 12/27
いつでもCTFの問題に挑戦できる常設CTFと呼ばれているサイトがいくつかあってcpawCTFはそんなサイトのうちの一つです。
cpawCTFは常設CTFの中でも特に入門者に優しく、問題文にヒントがいっぱい書いてあるためググる能力が高ければ全くCTFやったことないのに全部できるという方もいるかもしれないというくらいの難易度でした。
問題数も20問ちょっとしかないのでとりあえず色んなジャンルの問題に気軽に触れられて楽しいです。
ぼくはこのサイトをググりまくって自力で埋めてからちゃんと勉強を始めようと決意したのですが、"[Reversing]またやらかした!"という問題が一生わからずにいったん断念しました。
Reversingなんもわからないからねます(ヽ´ω`)トホホ・・ pic.twitter.com/gOK6p2bubw
— ぴーよ (@ywmt_kpr) 2019年12月26日
ハリネズミ本を買う 12/28 ~ 1/4
cpawCTFを一問放置したまま本格的な勉強を始めるためにセキュリティコンテストチャレンジブック(通称ハリネズミ本)を買ってみました。*2
買ってしまった
— ぴーよ (@ywmt_kpr) 2020年1月1日
入門します pic.twitter.com/qYmOOAhRwi
競技プログラミングでいう蟻本みたいなやつで、表紙にはハリネズミが書かれています。
この本ではReversing(binary), pwn, Network, Webの4分野に絞って入門者向けに書かれています。
が、正直結構難しくてReversingとpwnの部分に一通り目を通したあたりで瀕死になってました。(まだ後半は読めてません.....)
感想としては
- ある程度のプログラミングの知識があることは前提となっている
- メモリとかCPUを初めて聞きました!!みたいな感じだと読むのしんどそう
- アセンブリ言語(プログラミング言語と機械語の間みたいなやつ)をすらすら読めるとなお良い←ぼくは読めないです(´・ω・`)
- むずかしい
- むずかしい
- むずかしい
って感じでした。
そんなときに現れた救世主がこの記事です。
qiita.com
スライドの図がとても丁寧なのでハリネズミ本のpwnの部分を読んでもやもやしたらこの記事読むとすっきりすると思います。
上の記事を見てなんとなく攻撃の仕方とかがわかってきたらこの記事も詳しくまとまっていてすごくよかったです。(この記事はまだ理解できてない部分もたくさんあります...)
そして、ハリネズミ本を読んだ後にようやくcpawCTFが埋め終わりました!
CpawCTF全部埋まったー pic.twitter.com/MA3FpKYY3S
— ぴーよ (@ywmt_kpr) 2020年1月4日
また、このあたりの時期にCTFが基本的にチーム戦であるということを知りました。*3
チーム戦なので基本的には自分の強みとなる分野を作るといいらしいことがわかり、とりあえずその時やっていたpwnという分野の問題を解いていくことにしました。
ROP Emporiumを埋める 1/4 ~ 1/8 ←いまここ!
pwn入門者用のサイトとしてROP Emporiumやksnctfをおすすめされたので現在はROP Emporiumに挑戦中です。
ROP Emporiumは問題を解くサイトというよりは練習用教材を配布してくれているサイトで自分のパソコンを攻撃してFlagをゲットする練習をしてみることができるようです。
32bit環境(ハリネズミ本はこっち!)と64bit環境両方の教材が置いてあるので比較しながら練習をすることができます。
ただし、64bitをやるときはこの記事をまず読んだ方がいいです。
qiita.com
ぼくはこの注意点に見事に引っ掛かり一日を溶かしました.....
また、このタイミングで環境が厳しくなってきたのでWSLからVirtualBoxに変更しました。
VirtualBox最高!!!!(Dockerが犠牲になりました.....) pic.twitter.com/XJnu7NaPeb
— ぴーよ (@ywmt_kpr) 2020年1月7日