VolgaCTF2020に参加しました
CTFへのやる気が最近出てきてて、その勉強の一環としてこのコンテストに参加しました。d4wnin9が一緒にでてくれました。ありがたい。
チーム名はbodhiです。これからも頑張りたいと思います。
解いた問題
cryptoの一問だけなんで書こうか悩みましたが、あとあと自分の役にも立ちそうなので書こうと思います。
解いたのはNoname[100]これ絶対100いらん。他の50の問題とかより簡単だった。なんならこれが一番簡単かも。
Noname[crypto,100]
[問題文]I have Noname; I am but two days old.
pythonのファイルと暗号化されたflagが渡されます。
[encryptor.py]
[encrypted]
uzF9t5fs3BC5MfPGe346gXrDmTIGGAIXJS88m
ZntUWoMn5fKYCxcVLmNjqwwHc2sCO3eFGGXY
3cswMnO7OZXOw==
pyhonの内容でわかること
・time.time()で出た値をmd5変換する ← これがAES暗号のkey
・AESでエンクリプションしたflagをさらにbase64でエンコードする
ほかの行はあまり読まなくていいと思う
調べる
time.time()の値がどのようなものか知らなかったので調べてみる
調べた結果
1970年1月1日0時0分0秒から今までの時間を秒単位で表す
今何秒かわからなかったのでコードを書いて実行すると、1585358796(2020/3/29/10:35くらい)でした。keyで取り出した値はいつかわからないのである程度の範囲を作ることにした。 [1580000000,1585300000]
この範囲は結構適当な計算。しかも書いてて気づいたけどtwo days oldってことは2日前に作られたってことじゃね?
無駄なことをしてしまいました...
復号していく
書いたコードはこちら
・for文でさっき作った範囲を回す
・keyを自分で作って復号する
実行する
python decode.py | grep -a Volga
VolgaCTF{5om3tim3s_8rutf0rc3_i5_th3_345iest_w4y}
ちゃんと出てきました。grepするときに-aしていないとうまいこといかなかったです。
最後に
今回のコンテストは今までと全く違うくて楽しかった。
画像処理が全くわからなかったのでそれを次は勉強していきたい。
結構あともうちょっとっていう問題もあったので、writeup見て勉強していきたいと思います。
ありがとうございました。