ichirin2501's diary

いっちりーん。

ksnctfに取り組んだ話

ここ最近、ksnctfというものをやっていました。
主にコンピュータセキュリティに関する問題が出題され、FLAGをゲットする遊びです。
現時点(全21問)では全問正解しましたので、私なりにヒントを書きます。
書こうと思ったのは、勉強になるので是非やってみてほしいと考えたからです。


はじめに、CTFを知らない人もいると思いますので、軽く説明です。

CTFについて

CTFとは、世界各地で開催されている著名な旗取り合戦競技(Capture The Flag)のことで、セキュリティ技術を競うコンテストの総称です。クイズ形式の問題の謎を解いたり、実験ネットワーク内で疑似的な攻防戦を行ったりします。クイズ形式の場合、出題ジャンルは、暗号、バイナリ、ネットワーク、Web、プログラミングなど多岐に渡り、セキュリティのみでなくプログラミングに関する知見も問われ、攻撃技術、防御技術、解析技術、暗号の知見、ネットワーク技術など、広範な知識と経験が必要となっています。CTFはIT技術に関する総合的な問題解決力を磨くうえで最適な競技と言えるでしょう。

http://www.seccon.jp/p/ctf.html

日本でも今年からSECCON(SECurity CONtest)というのができました。
定期的にCTFも開催する様子ですので、興味のある方は参加されてはいかがでしょうか。


ksnctfについて

http://ksnctf.sweetduet.info/
まずは、感想を述べたいと思います。
出題された問題はいずれも素晴らしいと感じました。
私から見て(CTF初心者)、
・ぐぐればなんとかなる(難易度設定が良い
・勉強になるような題材
の2点です。
ストレートで解けた問題は多くなくて、本当にだいたいぐぐってます。
全体を通して、多少の予備知識(ぐぐるためのキーワードに心当たりがある程度)と、
気合があれば解けるんじゃないでしょうか。(予備知識の程度は人によりますが…)。
楽しい時間を提供してくれた作成者であるkusano_kさんにこの場をお借りして感謝を。
個人的に いいね! と思ったのは、
4: Villager A
6: Login
9: Digest is secure!
13: Proverb
21: Perfect cipher
これら5つの問題を挙げたい。いずれも勉強になりました。


下記から各問題のヒント?になります。※反転させてください
中にはヒントになっていないものもありますがご容赦ください。
もう少しヒント欲しいという方はコメントか、もしくはTwitterとかで。

1: Test Problem
hint1: やるだけ

2: Easy Cipher
hint1: 古典暗号

3: Crawling Chaos
hint1: javascriptデバッグツールを使う,あとは気合

4: Villager A
hint1: フォーマットストリング攻撃
hint2: GOT overwrite

5: Onion
hint1: base64
hint2: fileコマンド便利だよね

6: Login
hint1: ' OR 1=1--
hint2: Blind SQL Injection, データベースによって関数が異なるよ

7: Programming
hint1: whitespace,あとは気合

8: Basic is secure?
hint1: BASIC認証

9: Digest is secure!
hint1: Digest認証の仕組みを知っていますか?

10: #!
hint1: んあー

11: Riddle
hint1: リバースエンジニアリングだから気合です

12: Hypertext Preprocessor
hint1: 関係ない数値がありますよね, 2012-1823

13: Proverb
hint1: シンボリックリンク

14: John
hint1: john the ripper
hint2: 2chでよくある読み方

15: Jewel
hint1: apk -> jar, がんばって読む

16: Math I
hint1: RSA暗号

17: Math II
hint1: 超える値と超えない値で二分探索しました

18: USB flash drive
hint1: forensic問題, autopsy, FTK Imager etc

19: ZIP de kure
hint1: pkcrack

20: G00913
hint1: G00913ってGoogleで調べろってことです

21: Perfect cipher
hint1: XORの性質
hint2: メルセンヌツイスター擬似乱数生成は条件が揃うと予測可, XORShiftは逆算可能