katagaitai CTF勉強会 - 関東|med に参加してきました
通算3回目の参加。なんかだんだん解るようになってきた。
場所は安定の、人員の許容量が宇宙ヤバい秋葉原UDXで開催
午前の部 trmrさん¶
Cryptoは、難しい。。けど、面白い!!
興味を持つきっかけになりました。
CTF的には、あらゆる暗号の脆弱性と、それを攻略するサンプルソースを収集しておくと最強という気がしてきた。
brute.c の使い道について¶
受講者諸氏のみなさんは、きっとご理解の事と思いますが、
そもそも初っ端でハマったりしたので、自分とそういう人のために解説するぞ!!!
最初、本題に入る前に
You must first solve a puzzle, a sha1 sum ending in 16 bit's set to 1, it must be of length 21 bytes, starting with rduKahJ1/q4QW1HR
とか言われるでしょ?これは
- 21ByteのByte列をサーバに送信する
- 上の場合、"rduKahJ1/q4QW1HR" から始まる21ByteのByte列にすること
- このByte列のsha1ハッシュを生成した際、末尾16ビットは 0xffff になるようにすること
- 17Byte目以降は、高い確率でASCII文字以外(バイナリ)になるので、当然 netcat じゃ遅れないぞ!netcatで頑張ってた君!無駄だったな!
ご参考で頂いた brute.c は、答えを16進数で出力してくれますが、
これをバイナリにデコードして送信しないといけないので、netcat だと出来ないのです。
あくまでも、brute.cを参考にプログラミングしてねってことです。brute.cだけでは、この問題を突破できません。
という訳で、brute.c ですが、それをコンパイルして、実行します。
$ ./brute 'rduKahJ1/q4QW1HR' 7264754b61684a312f7134515731485297df000000
正解が16進数で得られます。サーバに送るのは、これを バイナリにしたもの です。
16文字目までは、rduKahJ1/q4QW1HR になってますよ。
rduKahJ1/q4QW1HR = 7264754b61684a312f71345157314852
$ echo "7264754b61684a312f71345157314852" |xxd -p -r rduKahJ1/q4QW1HR
後半は、 97df000000 とかなってるでしょ?これは netcat から標準入力で入力できないというわけ。
いちおう、本当に要件通りの入力になっているか確認してみますか。
$ ./brute 'rduKahJ1/q4QW1HR'|xxd -p -r |sha1sum f7927aeeb5444e87a93cc6f6372b5a82e02effff -
ふむ、ちゃんと末尾が 0xffffになってますなー。
本題に入る前に、こんな問いをしてくるのは、本題に対するブルートフォースやファジングを抑止する目的があるらしい。
午後の部 bataさん¶
いやいやいや、私がCTFで得点できないCryptoとPwnでしたが、だんだん解るようになってきましたね。。
ありがたいかぎりです。
ただ、解法まで辿り着くアイデアがスゴイので、こういうの整理したいところ。
(でもなかなか、整理するのが難しいんですよね。。)
特に後半の変態問題と、それを解いた変態解法がスゴイwwww
思わず笑うレベル。
おまけ¶
お昼は近場の岡むら屋で食べました。
スキヤキを煮詰めた何かがご飯にかかっているような感じ。濃い。
またまた
後援のNRIセキュアテクノロジーズさんから、謎の暗号が書いてあるハッカ飴を頂きました!
ありがとうございました。
コメント
kanata がほぼ9年前に追加
当時の勉強会資料が公開されております。
trmrさん
http://www.slideshare.net/trmr105/presentations
bataさん
http://www.slideshare.net/bata_24/presentations