CTF始めました

経緯

id:umisama が SECCON とサイバー甲子園の宣伝をしていたので、予てから興味があった CTF に入門してみた。

とはいっても、CTF については本当に何も知らなかったので、適当にググッて見つけた ksnctf というサイトに登録して、問題を解いてみることに。

解いた問題

以下解法が含まれているので注意

Test Problem

表示されている FLAG を入力すれば AC。CTF の形式を確認するための問題らしい。

Easy Cipher

よくわからない文字列が表示されているが、区切りとかを見る限りなんとなく英語っぽい感じがする。英語だと考えると、幾つかある n という単語はおそらく a に違いない。ということで、n が a に対応する、かつシーザー暗号である仮定して復元してみると、それっぽい文字列が得られたので入力したら AC

Crawling Chaos

問題分は URL だけ。とりあえずアクセスしてみると、テキストボックスとサブミットボタンだけのフォームがある。ボタンを押してみると、no と alert が飛ぶ。

html を覗くと、script タグに見るからに怪しい文字列がある。(ᒧᆞωᆞ) こんな絵文字が延々と並んでいる。

また、ブラウザで挙動を眺める限りでは、どうやらボタンを押してもリクエストの類は飛んでいないらしい。となると、全てはソースの中にあるということになる。

となると、明らかに例の怪しい文字列鍵に違いない。試しにコピーして console に貼り付けてみると、実行できた。実行できるということはどうやら js として valid なようだ。

さて、どうしたものか。私にはこの謎のソースを読む気力はなかったので、alert の呼び出し元を調べることにした。ググってみると console.trace() という便利なメソッドがあるらしいので、alert = function() { console.trace() } という感じでモンキーパッチを当てて呼び出し元を調べると、直前に判定のようなものを発見。それがそのまま Flag になっているので、入力してAC。

Villager A

問題文に ssh の接続情報っぽいものが書かれているので、とりあえず接続。別のテキストが出力されて接続を切られると思ったが、ログインできた。ディレクトリの中には、q4, flag.txt, readme.txt があり、このうちreadme.txt 以外は q4a という別のユーザーがオーナーであり、flag.txt には読み取り権限がない。readme.txt には、「home ディレクトリには書き込めないよー」とか書いてある。

q4 は実行できるみたいなので実行してみると、ユーザー名を要求された後に「フラグがほしいか?」と聞かれる。が、no を入力すると終了し、それ以外だと聞き返されるだけ。

ここに正しい文字列を入れれば flag を吐くのかなーと思い、解析してみる。とりあえず strings q4 してみて、出てきた文字列を試してみたがダメっぽい。その後も od したり objdump したりするも、よくわからず。

結局、気力が尽きてギブアップ。ぐぐってみた感じだと、Format string attack ができるらしい。

感想とか

web周りはともかく、バイナリとかの未知の分野はちゃんと勉強しないと厳しい。ただ、CTF 強い人には憧れるので、ちょっとずつでも勉強したい。

なので、誰か、私に CTF 本を買ってください!

www.amazon.co.jp