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と言った感じで動きます

ここからのバイナリの動きですが

  1. 入力されたパスワードが20文字であるか確認

  2. パスワードを1文字ずつ確認してあっていれば次の文字、間違っていればWrong Password

と言った感じです。

比較する文字列は気づいた方も多いと思いますが、Y1w_5te`p-uaBfiiopesの20文字と比較しています

ここからがIDA先生の出番です

f:id:kataware8136:20170713205935p:plain

これを3個の流れのはじめはすべて一緒で

  1. Y1w_5te`p-uaBfiiopesから1文字を取得(movからmovzxまたはmovsxまで)
  2. 入力されたパスワードから1文字取得(次のmovからmovxzまたはmovsxまで)

そうすると残り二つにadd edx 1add edx 2があるのが気になります。

勘のいい人はここで気づくでしょうし実際にためせばわかるのですがasciiコードに1もしくは2をたしてから比較してる文字があるということです。

f:id:kataware8136:20170713211407p:plain

その前も見てると1足してる部分があります。まぁここの解説はほとんどする意味ないのでスルー

簡単に言ってしまうとmod 3して結果を受けてjmpしています。(実際はそれをめんどくさくやってる)

なのであとは文字列をいい感じにずらしてください。

flag自体は載せません。みなさんで試して突破してください。

パスワードがあってればflagがでてきます。Let’s Fight!!!

余談

ちなみに55はpush ebp