SECCON 2017 オンライン予選 write-up
動画見ながらやってたらいつの間にか動画に完全シフトしてたので、合計1時間くらいやりました。
解いたのは2問でした。
やっぱり千と千尋の神隠しは名作なんやなって。
こんな感じ。
Run me! (Programming 100)
Run me! ----- RunMe.py import sys sys.setrecursionlimit(99999) def f(n): return n if n < 2 else f(n-2) + f(n-1) print "SECCON{" + str(f(11011))[:32] + "}" -----
普通に動かそうとすると一生終わらないので、とりあえずf(11011)の部分を変えて動かしてみると次のような感じに。
1->1
2->1
3->2
4->3
5->5
はい、フィボナッチ数列っぽいのでWolframAlphaさんにお願いして、11011番目のフィボナッチ数を計算してもらいました。
www.wolframalpha.com
fibonacci[11011]
11011番目のフィボナッチ数を出してくれるので、その上32桁をコピペするだけ。
SHA-1 is dead (Crypto 100)
SHA-1 is dead http://sha1.pwn.seccon.jp/ Upload two files satisfy following conditions: file1 != file2 SHA1(file1) == SHA1(file2) SHA256(file1) <> SHA256(file2) 2017KiB < sizeof(file1) < 2018KiB 2017KiB < sizeof(file2) < 2018KiB * 1KiB = 1024 bytes
有名なSHA-1衝突。
SHAttered
ここからファイルも落とせる。
よくわからないので、光成さんのスライドを参考に。
どうも重要な部分は序盤の一部だけで、ファイルの後ろのほうはどうでもいいみたいなので、上記URL先で落としたファイルの後ろに適当に追記。
Stirlingで延々とAAをくっつけました。
2ファイルとも2017KiBを少し超えたところで保存して、ファイル投げたらFlagが降ってきました。
最初、2017KB(2017000byte)かと思って延々とファイル投げて何で通らないんだろってなってSHA-256出したりしてたので、ちょっと時間かかりました。