ぴーよメモ

大学生のひとりごと

セキュリティ完全初心者がCTF入門して半月が経ちました

記事を開いてくださったみなさんようこそ。
ぴーよです(*- -)(*_ _)ペコリ


年末年始にかけて異様になぜかモチベーションが高くて勢いで前から気になっていたCTFを始めてしまいました。
初心者だった時の気持ちは脱初心者すると忘れてしまうとよく聞くので、覚えているうちにわかったこととか参考にしたものとかを時系列順でまとめておこうと思います。

CTFとは

おそらくこの記事を目にしている方の大半は知っていると思いますが一応。

CTFは"Capture The Flag"の略で、『与えられた問題からFlag(旗)をゲットすることを目的とした競技です』みたいなことがググると出てきます。


f:id:holeguma:20200108172213p:plain
旗ってなに.....???



旗っていうのはほんとに旗があるわけじゃなくて、決まった形の答えの文字列*1がいろんな方法で隠されててそれを旗と呼ぶっぽいです。
例えば"FLAG{~}"みたいな形式の文字列がどこかに隠されてるから見つけてきてね見たいな感じです。

始める前は旗の画像が隠されてるのかと思ってました。


長々と書きましたが簡単に言うとハッキングの競技です。


実際にどんな感じなのかは琴葉姉妹と学ぶハッキングシリーズの動画を見ると雰囲気がつかめます。
www.nicovideo.jp



余談ですがサバゲーとかFPSにもCapture The Flagっていう分野があるらしいですね。

やり始めたとき 12/26

とりあえずこの記事を読みました。

kinako-mochimochi.hatenablog.com

この記事はCTFにはどんなジャンルの問題があってどういう本で勉強すればいいのかがまとまっているのでとても助かりました。

後、いわゆるいきなり崖から突き落としてきて這い上がってこれる奴だけついてこい的な記事も多い中、すごく初心者に寄り添って記事が書かれているのもよかったです。




cpawCTFを埋める 12/26 ~ 12/27

いつでもCTFの問題に挑戦できる常設CTFと呼ばれているサイトがいくつかあってcpawCTFはそんなサイトのうちの一つです。

ctf.cpaw.site

cpawCTFは常設CTFの中でも特に入門者に優しく、問題文にヒントがいっぱい書いてあるためググる能力が高ければ全くCTFやったことないのに全部できるという方もいるかもしれないというくらいの難易度でした。

問題数も20問ちょっとしかないのでとりあえず色んなジャンルの問題に気軽に触れられて楽しいです。

ぼくはこのサイトをググりまくって自力で埋めてからちゃんと勉強を始めようと決意したのですが、"[Reversing]またやらかした!"という問題が一生わからずにいったん断念しました。




ハリネズミ本を買う 12/28 ~ 1/4

cpawCTFを一問放置したまま本格的な勉強を始めるためにセキュリティコンテストチャレンジブック(通称ハリネズミ本)を買ってみました。*2



競技プログラミングでいう蟻本みたいなやつで、表紙にはハリネズミが書かれています。
この本ではReversing(binary), pwn, Network, Webの4分野に絞って入門者向けに書かれています。



が、正直結構難しくてReversingとpwnの部分に一通り目を通したあたりで瀕死になってました。(まだ後半は読めてません.....)



感想としては

  • ある程度のプログラミングの知識があることは前提となっている
  • メモリとかCPUを初めて聞きました!!みたいな感じだと読むのしんどそう
  • アセンブリ言語(プログラミング言語機械語の間みたいなやつ)をすらすら読めるとなお良い←ぼくは読めないです(´・ω・`)
  • むずかしい
  • むずかしい
  • むずかしい

って感じでした。



そんなときに現れた救世主がこの記事です。
qiita.com

スライドの図がとても丁寧なのでハリネズミ本のpwnの部分を読んでもやもやしたらこの記事読むとすっきりすると思います。


上の記事を見てなんとなく攻撃の仕方とかがわかってきたらこの記事も詳しくまとまっていてすごくよかったです。(この記事はまだ理解できてない部分もたくさんあります...)

raintrees.net



そして、ハリネズミ本を読んだ後にようやくcpawCTFが埋め終わりました!



また、このあたりの時期にCTFが基本的にチーム戦であるということを知りました。*3


チーム戦なので基本的には自分の強みとなる分野を作るといいらしいことがわかり、とりあえずその時やっていたpwnという分野の問題を解いていくことにしました。

ROP Emporiumを埋める 1/4 ~ 1/8 ←いまここ!

pwn入門者用のサイトとしてROP Emporiumksnctfをおすすめされたので現在はROP Emporiumに挑戦中です。


ROP Emporiumは問題を解くサイトというよりは練習用教材を配布してくれているサイトで自分のパソコンを攻撃してFlagをゲットする練習をしてみることができるようです。


32bit環境(ハリネズミ本はこっち!)と64bit環境両方の教材が置いてあるので比較しながら練習をすることができます。


ただし、64bitをやるときはこの記事をまず読んだ方がいいです。
qiita.com

ぼくはこの注意点に見事に引っ掛かり一日を溶かしました.....


また、このタイミングで環境が厳しくなってきたのでWSLからVirtualBoxに変更しました。



おわりに

最後まで読んでいただきありがとうございました!
これからも精進していくのでTwitter等でアドバイスをいただけると泣いて喜びます。
記事の間違いの指摘はいつでもお待ちしておりますのでお気軽にどうぞ。

*1:まだ浅いので答えが文字列の問題しか解いてないですが文字列以外の場合もあるのかもしれません

*2:ついでにセキュリティコンテストのためのCTF問題集っていう本も買いました。こっちも表紙がハリネズミ

*3:つよくなるとチームにスカウトされたりするのでしょうか??夢がありますね!