SECCON2016決勝大会に参加した
SECCON2016決勝大会にうさぎさん,ちひろさん,ジョニーさんと,チーム「BinaryOishii」として参加した.私は何もできずに辛かったが,大会はとても楽しかった.
前日
私の地元はとても田舎なので,金曜日の授業を途中抜け出して東京へ向かわないと間に合わなかった.新幹線に乗り,東京へ着くと雪が積もっていないことに驚いてしまった.
1日目
受付に遅れないように東京電機大学へ向かうと,会場にはすでにいろんな人がいて懐かしい気持ちになった.久しぶりにあった人たちと会話をしていると,海外勢のチームがやってきた.特にshellphishを見たときはかなり感動した.
競技のための準備をしていると,競技開始の約30分前に私の持ってきていたUSB-有線LANケーブルが機能していないことに気づき,運営にも余っているものはないらしく,全力で走って近くの家電量販店で買ってきた.CTFは体力が必要だな.
だが,競技が始まった途端,ネットワークトラブルなどで一時中断され12:00からの再開までご飯を食べたりしていた.あんなに焦ったのに..
いざ実際に始まるとみんなパソコンに張り付いて離れなかった.チームの方針としてせっかくKingOfHill形式なのだからJeopardyは後にしようということでサーバーの問題に張り付いていたのだがやはりレベルが高く1日目は0点で終わってしまった.後で聞いた話だと,運営側でかなり心配されていたらしい.
私はホテルに帰ってしばらくバイナリを眺めていたが,結構すぐに寝てしまった.
2日目
同じように会場に行き,競技が始まるとすごい勢いでフラグを入れて行く音声が流れた.みなさん家で宿題をきっちりとやってきていたようだ.しばらくして,うさぎさんがヘブライ語のシェルコードの問題のフラグをゲットし,そこからJeopardyの問題などを解き始め最下位を抜け出した.
私はチームとしてCTFに出ることはあまりなかったので,話し合いながらCTFしたり作戦を決めたり,といったことができてとても楽しかった.
競技が終わると懇親会があり,楽しく寿司など食べながらいろんな人と話をした.インターンシップであった人と出会ったときはめちゃくちゃ驚いた.セキュリティ業界というのは狭いなと感じた.
二次会に誘われたので行った.ここでは,もっとラフにいろんなことを話したりできて貴重な経験をした.海外のチームとも交流したが,英語力が壊滅的だったので,ギリギリ聞き取れる英語を聞いて笑ったりしていた.
最後
問題の評判は色々とあるが,今回CTFの楽しさを強く実感した.これからしばらくは受験などがあり,あまり積極的に取り組むことができなくなるかもしれないが,それが終わってからでもずっと続けていこうと思った.またこの一年,いろんな人と知り合うことができたのでその人たちと張り合えるくらい強くなっていきたいと思っている.
そして,メンバーの皆さん本当にありがとうございました.
SECCON大阪大会(バイナリ早食い)に参加してきました
SECCONの大阪大会にうさぎさん、ちひろさん、つけジョニーさんと「バイナリおいしい」というチームで参加してきました。セキュリティキャンプで出会ったメンバーです。
大会の内容はセキュリティの自動化をすごく意識したものになっていて、一秒ごとに問題バイナリが変わったりする、結構面白いルールのCTFでした。
大会中
僕は前日までにangrを少しいじれるくらいには練習して、あとはpwnの練習を主にやっていました。そしたら、大会の説明が始まるとangr使えないと話にならないような問題。ただでさえ雑魚で申し訳なかったのにそんなあ、、、みたいな感じになりました。しかし、そんなことばっかり言ってられないので、わかる知識をフルに活用してみなさんと話し合いをしていました。僕のチームでは、ものすごい実装力を持った人がいて、その方のおかげでじゃんじゃん自動化していって、点数を稼ぐことができました。やはりCTFとはいえプログラミング能力は必須!そんなことをひしひしと感じたので、競技プログラミングを積極的に取り組んでいって、実装力を身につけようと感じました。
結果
優勝
セキュリティ・キャンプ全国大会2016に参加してきました
レンジです
8/9~8/13の五日間、幕張で開催されるセキュリティ・キャンプ全国大会2016に参加してきました。これは、IT技術のうちのセキュリティに特に興味を持った学生たちが集められて、セキュリティ技術をその手のプロに教えてもらうイベントです。参加するには選考があって、これに合格しないと参加することができません。僕は去年の選考に落ちてしまったので、今年参加できて本当に嬉しかったです。一度落ちてしまっても諦めずに次の年に頑張って欲しいです。
キャンプの内容は最高って感じで、僕の人生の思い出ランキングぶっちぎりでNo.1になりました。その内容と感想を書いていきます。
1日目
まず、集合してから特別講義が始まるまでは名刺交換バトルでした。一気にいろんな人と名刺を交換するので顔と名前を覚えるのが大変でした。事前にTwitterなどで絡みがあった人もいたので、そういった人たちとはすんなりと仲良くなることができました。
特別講義では特にサイバーディフェンス研究所の福森さんの話がとても印象に残っています。めちゃくちゃかっこいい人だなあと思いました。話の最後の質問タイムで質問させていただき、サイバーディフェンスのポロシャツをもらいました。とても嬉しかったです。
最後にグループワークがあって、僕らのグループは「.t」(ドットティー)というチーム名になりました。議論する議題は「子供たちにどうやって正しいIT技術を身につけさせるか」といったものでした。
2日目
ここから専門講義が入ってきます。二日目に僕が撮っていた講義は。
1-D Dissecting Malware - x86 Windows malware analysis
2-C 人工知能とセキュリティ
でした。1-Dはマルウェアを動かさずに静的に解析しようというもので、アセンブリをたくさん読みました。2-Cは人工知能の活用方法などが知れました。人工知能にとても興味が湧いたので、これから勉強していこうと思いました。
夜にCTFもあって、僕はバイナリを読んでたんですけどイマイチ解き方まで思いつかなくて結局何も解けずじまいでした。めっちゃ悔しかったのでこれからいろんなCTFに挑戦していこうと思いました。
3日目
この日に僕が受けた講義は
3-D The OOM CTF
4-D 実行ファイルの防御機構を突破せよ
5-D みんなでクールなROPガジェットを探そうぜ
という全て解析トラックになってしまってました。3-Dは話を聞くだけの座学だったのですが、この内容がめちゃくちゃ難しくて全く理解できませんでした。linuxの闇の部分らしいので面白そうなところだと思います。4-Dは実行ファイルについている防御機構を突破する講義です。事前課題で簡単なエクスプロイトを学んで、講義ではASLRという機能を突破する方法を学びました。5-DはROPガジェットを組み立てていく講義なのですが、他の講義が4時間あるのにこの講義は1時間半しかありませんでした。この講義はひたすらROPガジェットを作っていく実習だったのでめっちゃ楽しかったです。
4日目
この日は6,7-Fのなぜマルウェア解析は自動化できないのかという集中講義を受けました。これもとても難しい講義で、普段聞いたこともないツールを駆使して、マルウェアの挙動を解析していく講義でした。全部で8時間に及ぶ実習でしたが、技術を全て身につけることはかないませんでした。しかし、この講義でマルウェア解析というものにとても興味を惹かれて、解析の自動化はもちろん、もっと基本的なところから勉強しようと思いました。
そしてグループワーク最後の日でしたので、資料作りが大詰めになっていました。これは毎年のことらしいのですが、やっぱり今年もほとんど寝ることはなく資料を作り、発表に入る感じになってしまいました。セキュキャンの4日目は覚悟したほうがいいぞ。
最終日
睡眠時間約2時間で発表に入りました。発表は僕がしたのですが、やっぱり緊張してしまってしゃべり方が硬かったかなとちょっと反省しています。しかし、大きな失敗をすることもなく無事に終わったかなという感じです。
「.t(どっとてぃー)」チーム発表 #spcamp #seccamp pic.twitter.com/IJmAmYI3R5
— セキュリティ・キャンプ (@security_camp) 2016年8月13日
最後には本やグッズのプレゼントがあり、好きな本を自由に持っていっていいよという最高のイベントがありました。くじでもらいに行く順番を決めるのですが、それが割と最後の方になってしまって一番の目当ての本はもらえませんでした。しかし、それでも前から欲しかった本が幾つかあったのでそれをもらってとても満足しました。
その他色んなものをもらいました。
まとめ
とても楽しい五日間でした。個人的には素晴らしい講義を受けられたことも良かったのですが、同じ志を持った仲間ができて、いろんな話をすることができたことが一番嬉しいことだったなと思います。僕は全く技術力のない方なのですが、参加者にはとてつもなくすごい人がいたり、チューターの方はだいたいみんなすごい人なので、そういう人たちとつながりを持ててこれからのモチベーションになりました。キャンプ中に全てを理解して五日間で成長するというのは無理なことで、そこから成長するための刺激をもらいに行くイベントなんだなと強く感じました。少しでも興味のある人は是非、応募課題を出してみてほしいと思います。僕の応募課題は出来が悪すぎて公開するのが恥ずかしいくらいなので、来年の提出時期になったら一瞬だけ公開しようかなと考えています。
参加者、チューター、講師、運営の皆様、本当にありがとうございました。
for文縛りのFizzBazz
だいぶ前に学校でFizzBazzの課題が出された時に普通のif分岐のものを書くのが退屈だったので、for文のみで書いてみました。
案外難しく、大変だったですけど結構楽しめました。
文字列処理を多用しているので、プログラミングを少し学んだ人の練習などにいいかもしれません。
ソースコード置いときます。もっと賢い方法があれば教えてください!
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> void slide();//配列の位置を前にずらす void dspace();//先頭の空白を削除する int main(int argc, char const *argv[]) { char n[100][16]; int i,j; for(i=1;i<=100;i++) { sprintf(n[i-1],"%d",i);//数値を文字列に変換し配列に格納 strcat(n[i-1]," ");//空白追加 } for(i=3;i<=100;i+=3)//3の倍数 strcat(n[i-1],"Fizz"); for(i=5;i<=100;i+=5)//5の倍数 { strcat(n[i-1],"Buzz"); slide(n[i-1],2);//先頭の数字を消す } for(i=3;i<=100;i+=3) slide(n[i-1],2);//3の倍数の先頭の数字を消す slide(n[99],3);//最後だけ3ケタのため消す文字数を変更 for(i=0;i<100;i++) { for(j=0;j<strlen(n[i]);j++) dspace(n[i]);//先頭の空白を全て削除 printf("%s\n",n[i]);//表示 } return 0; } void slide(char *n,int len) { int i,j; for(j=0;j<len;j++)//消す文字数の分のループ for(i=0;i<strlen(n);i++)//前に一つずらす n[i] = n[i+1]; n[i] = '\0';//文字列の直後にnull文字を追加 } void dspace(char *n) { int i; for(i=0;isspace(n[i]);i++)//空白文字が先頭にあればずらす slide(n,1); }
CTF for ビギナーズ in 奈良(A&D) に参加しました
10/17に奈良の奈良先端科学技術大学でctf4bのA&Dが行われたので参加してきました。
A&Dは今までやってきたCTFとは違い、攻防戦という形のもので実践的なCTFといった感じでした。
僕のチームは「サバ缶」というチームで参加しました。
会場に行くと間もなくしてチュートリアルが始まりました。
チュートリアルを聞いて思ったことは、ウェブがなんにもわかんねぇ...
ウェブの技術を何一つ身に着けていなかった僕には内容が何もわかりませんでした。あれは簡単な内容だったのだろうか?
まあでも今回は優勝目指すぜ!って感じではなく、純粋にA&D楽しそうだな、たのしもうなって感じだからまあいいや。
それにしてもせっかくチュートリアルをしてくれているのにその内容が理解できていないのはやっぱりもったいない感じでした。
これからは好き嫌いなくウェブも勉強しようと思いました。ていうか普通にウェブ楽しそう
sshの問題もあったのですが、これは問題というほどのものでもなくラズパイのpiユーザーにデフォルトのパスワード(raspberry)でログインしてホームディレクトリにおいてあるcommandというファイルを実行するとフラグが出てくるという案外しょうもない問題でした。しかし、僕はこれに結構序盤で気づくことができて最初に得点を入れることができました。一瞬でも1位になれた時はめちゃくちゃ嬉しかったです。
悪かったこと
- 上にも書いたがウェブの問題を全くしていなかったこと
- 何か思いついてもそれを実装する力がなかったこと
総合して今回のCTFはとても勉強になったものの自分の力のなさに気付かされたといったところでした。
なので自分にどんな技術が必要なのか気づけたのはとてもよかったと思います。
特にプログラミング能力が皆無だったことに絶望しました。orz
これから毎日精進したいと思います。
そして、これまで九月あたりからいろんな勉強会やctfに参加しましたがやっぱり勉強会に参加するのは家で勉強するのよりもはるかにためになるなと実感しました。特に同じ志を持った人たちと交流できることがとてもいいと思います。これからしばらくイベントに参加する予定はないですが、機会があればもっといろんな勉強会に参加したいです。
近畿圏で勉強会がもっと増えたらいいのになあ
ctf4b(CTF for ビギナーズ)滋賀に参加した感想とwrite up のようなもの
10/3に滋賀県の立命館びわこ草津キャンパスに行ってctf4bに参加してきました。
京都から電車を使って南草津駅まで行ってバスに乗り立命館大学まで行ったのですが、キャンパス超広い。。。
中で早速迷いまして、ぶらぶら歩いていると案内の人が立っていたので安心しました。
会場につくともうすでに人がたくさんいたんですが、講義が始まるころにはすごくたくさんの人が集まっていました。
個人的に驚いたのは、学生ばっかりだと思っていたんだけど結構年齢層が広かったことです。
講義の内容はバイナリとネットワークでした。僕はwebの講義も受けたかったです。
バイナリは結構知っていることが多かったのですが、ネットワークは始めて知ることが多くとても楽しかったです。
どちらの講義でもツールの使い方を丁寧に教えてくださって、とても実践的でした。
講義が終わるとCTFが始まりました。講義で聞いたことをそのまま使ったり、少しの応用だけで解ける問題が多かったのでわりと何問かはするする解けました。
一瞬前のモニターに僕の名前が乗ってたときはテンション上がりました。(すぐ消えたけど、、)
結果は1000点でした。自分的には結構いい方だったと思います。ただ、web問は事前の資料を配布されたにもかかわらずまったく読んでいなかったので一問も解けなかったことが残念でした。勉強してたらあと300点くらいは取れたんじゃないかなー(言い訳)
write upのようなもの
CTFの後には答え合わせがあったのですが、このブログでは答え合わせされなかったけど僕が解けたbinary300の解法を載せようと思います。
まず、この問題はbin300という拡張子なしのファイルが渡されます。とりあえずfileコマンドで調べるとどうやらexeであることが分かります。これをコマンドライン上で実行すると
"Oh,you input wrong answer"
というメッセージボックスが出されます。何なのかよく分かりませんが、とりあえずIDAで開いてみると最初の処理から__wrongと言う関数にジャンプしていることが分かります。
どうやらこの関数に当たると失敗という感じらしい。別の分岐先でもジャンプ命令が存在しその分岐先に__wrong関数があります。それが何段かありました。そして下の方を見てみると、__answerという関数があります。
まあ、ジャンプ命令のところでsetipをたてて、ジャンプ先を変更し、__answer関数までたどり着ければフラグが出るんだなと予想をつけやってみる。
途中ジャンプ先を変更して、次のジャンプ命令まで実行しようとすると変なエラーが出て先に進めなかったのですが、次のジャンプ命令の上で右クリックをしてsetipをたてていくと、一番下まで進んでいき__answer関数を実行するとフラグがでできました。
こうしてみるとそんなに難しい問題ではなかったのですが、ツールの使い方が分かってるかどうかってところですね。(エラそうにいってるけど僕まったく使えませんw)
今回の勉強会は僕のレベルにすごく適していたと思いますしすごく楽しめました。
またこれからも様々な勉強会やCTFなどに挑戦していこうと思います。
トレンドマイクロCTFのオンライン予選&セキュリティ技術交流会 in 神戸(9/26-27)に参加してきました
今回神戸で開催された大和セキュリティが主催の技術交流会に参加してきました。
内容はトレンドマイクロのCTF、TMCTFのオンライン予選を神戸で集まってみんなでやろうぜという感じでした。
でも僕はとんでもなく初心者で、CTFに参加するのも勉強会のようなものに参加するのも初めてだったので何も貢献することはできませんでした。
実際オールナイト参加だったのですが、問題に取り組んでも手も足も出ない僕は夜はがっつり5~6時間寝てましたw
それでも得られたものは結構あって、問題に実際に触れて「なにもできねぇな」何て思いながら強い人たちが議論しあって解決してるのを見るとすごくいい刺激になりましたし、何よりもtwitterで見かける人たちと話をしたりすることができたのが一番よかったです。
夜にみんなで買いに行ったピザおいしかった!
本来ならここでかっこよくwriteupとか書きたいもんですが、それはまだずいぶん先になりそうですw
来週のctf4b滋賀がではもっと初心者むけになってるはずなのでそこでもっと力をつけたいですね