知ることは、たのしい。

入門レベルの情報系学生が勉強する。同じ分野に初めて興味を持った人への参考になればいいなあ

はじめてのCTFさんか

ABCTFというCTFに参加してきました。

まだ勉強始めてそう長くなくセキュリティコンテストチャレンジブック、通称ハリネズミ本すら終わってないレベルですが、

チームの枠が空いてるから折角、とのことで招待いただき初めてCTFに参加してきました。

チームメンバーがすごかったため23位にまでなることができました。

ABCTF?

If you can read this you can compete, but only K-12 students are eligible for prizes.

ABCTFは参加するのは誰でも可能ですが、上位者の賞品は高校生までしか貰えない大会です。

1チーム最大5人までエントリーできます。もちろん1人で参加することも可能です。

どんな問題が出るの?

すべての問題に共通しているのはflagと呼ばれる決まったフォーマットの文字列を入手することです。

今回ではabctf{各問題で異なる}という形をしていることが予め決まっています。

たとえば、暗号文が与えられ、それを平文がflagになっている問題

xyzqc{t3_qelrdeq_t3_k33a3a_lk3_lc_qe3p3}

これだと、abctf{} -> xyzqc{} と暗号化されていることに着目して、abc...z -> xyz...w となってることがわかりますね。

あとはこれを復号してあげればいいのです。

$ echo "xyzqc{t3_qelrdeq_t3_k33a3a_lk3_lc_qe3p3}" | sed -e y/xyzabcdefghijklmnopqrstuvw/abcdefghijklmnopqrstuvwxyz/ abctf{w3_thought_w3_n33d3d_on3_of_th3s3}

となり、flagが得られましたね。

sedコマンドの説明を少し書いておくと -e: 基本正規表現で処理 y/string1/string2/: string1の各文字をstring2の各文字に置換する。区切り文字'/'は他の文字で代用可能(例えば'#'とか)

他にもRSA暗号の解読や画像を解析して文字列を抽出する問題、webで管理者としてログインする問題などがありました。

僕が解けた数問の解法(writeup)については後日書きます。

入門者でも

まだ始めたばかりだから、とCTFやってるのに出ないのはもったいないです。

とりあえず出て、問題を見てみることでこんな問題が出るんだ、こんなの解けるのかよ、とか

格の違いを見せつけられることになりますが、入門者なんてそんなものです。僕もそうです。

参加すれば、優秀なHackerたちがwriteupをあげているので、

あの問題はこういう手法で解けるのか、ツールはこれを使ってるのか、などなど学べることはいっぱいあります。

そこは既に先人たちが到達した場所です。僕とともに存分に先人たちから学ばせてもらいましょう。

そんなことはどうでもよくて

CTF、知名度が低いのか敷居が高いのか、人口があまり多くはない気がします。

この問題を改善するためにぜひCTFやりましょう。