SECCON Beginners名古屋の参加記(供養)
7/1名古屋開催のSECCON Beginnersに参加してきました。
rev及びpwnが苦手なのでなんとかしようと思って参加
講義内容
Web: HTTP,SQLiのお話
Forensic:pcap,filesystem周り
Reversing: revの読み方
Forのpcapの話は知っていたのですがForのfilesystemを扱うコマンドがとっても便利でした
またReversingで小さな演習でrevを読んでくのは飽きにくく、がんばろうという気持ちに慣れました。
CTF
3問解けずの5位、ただし一問は絶対に解けるだろって感じ、flagがわかりきっていたのにpngに気を取られて死亡したのがもったいなさすぎる。
revはgdbを使い解いていったので今後も操作を忘れないように取り組んでいきたいです。
懇親会
実は今回の一番の目的だった懇親会。
今自分が学内向けにCTFの問題を差くもんしているので運営の方にお話を効くチャンスと考えてました。
れっくす氏、しふくろ氏、ちひろ氏から作問のお話を聞けて、いい感じの問題を作れそうです。
今回は開催場所が名古屋ということで普段nagoyasecにも参加しているため、色んな人からnagoyasecでのLTの方だよね。とお声をかけていただきました。
3月のnagoyasecのLTで「SHA1衝突でピンチ!」という内容をしたのですがよっぽどインパクトがあったらしく、次回のnagoyasecでもLTの登壇決定したらがんばらないとなという気持ちです。
Wirteup
正直他の問題は全部答え合わせしたのでコメントにきてたcrackme_revengeだけ
Crackme_revenge
Reversingです。当日は誰も解けていなかったやつです。これを含めてあの時間内に全完できたらたしかにBeginnerじゃないなと言う感じ。
と言っても難しい問題ではないです。ただこの問題はgdbで見ていくと辛いのでIDAで見ることをおすすめします。
バイナリは./crackme_revenge AAAA
と言った感じで動きます
ここからのバイナリの動きですが
入力されたパスワードが20文字であるか確認
パスワードを1文字ずつ確認してあっていれば次の文字、間違っていれば
Wrong Password
と言った感じです。
比較する文字列は気づいた方も多いと思いますが、Y1w_5te`p-uaBfiiopes
の20文字と比較しています
ここからがIDA先生の出番です
これを3個の流れのはじめはすべて一緒で
Y1w_5te`p-uaBfiiopes
から1文字を取得(movからmovzxまたはmovsxまで)- 入力されたパスワードから1文字取得(次のmovからmovxzまたはmovsxまで)
そうすると残り二つにadd edx 1
とadd edx 2
があるのが気になります。
勘のいい人はここで気づくでしょうし実際にためせばわかるのですがasciiコードに1もしくは2をたしてから比較してる文字があるということです。
その前も見てると1足してる部分があります。まぁここの解説はほとんどする意味ないのでスルー
簡単に言ってしまうとmod 3
して結果を受けてjmpしています。(実際はそれをめんどくさくやってる)
なのであとは文字列をいい感じにずらしてください。
flag自体は載せません。みなさんで試して突破してください。
パスワードがあってればflagがでてきます。Let’s Fight!!!
余談
SSIDを「我々はかしこいので」にしてたのは私です
— かたわれ【八木 鶫】 (@_ktwr) 2017年7月1日
55とか89e5で何の命令かわかる人は特殊な人間らしい#ctf4b
— かたわれ【八木 鶫】 (@_ktwr) 2017年7月1日
89e5はmov ebp espのはず
— かたわれ【八木 鶫】 (@_ktwr) 2017年7月1日
ちなみに55はpush ebp