uma3blog

気が向いたことを稀になんかいろいろ書きます。

SECCON 2017 オンライン予選 write-up

動画見ながらやってたらいつの間にか動画に完全シフトしてたので、合計1時間くらいやりました。
解いたのは2問でした。
やっぱり千と千尋の神隠しは名作なんやなって。


f:id:uma3san:20171210194950p:plain

こんな感じ。

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
ここからファイルも落とせる。

よくわからないので、光成さんのスライドを参考に。

www.slideshare.net
どうも重要な部分は序盤の一部だけで、ファイルの後ろのほうはどうでもいいみたいなので、上記URL先で落としたファイルの後ろに適当に追記。
Stirlingで延々とAAをくっつけました。
2ファイルとも2017KiBを少し超えたところで保存して、ファイル投げたらFlagが降ってきました。

最初、2017KB(2017000byte)かと思って延々とファイル投げて何で通らないんだろってなってSHA-256出したりしてたので、ちょっと時間かかりました。