MaidakeCTF2019 writeup Crypto編
Cryptoのwriteupです。
- Is this a cipher[50]
- Easy crypto[100]
- Old input[200]
- Do you know XOR[300]
- Kancolle hash[300]
- Caesar's Friends[400]
- SHA-1 collision[400]
- Secret image[500]
- まとめ
Is this a cipher[50]
flag.txtにはBase64が。
TWFpZGFrZUNURntiYXNlNjRfaXNfbm90X2FfY2lwaGVyfQ==
末尾に=が2つあるのですぐに分かりますね。
平文に戻せばFlagになります。
Flag:MaidakeCTF{base64_is_not_a_cipher}
Easy crypto[100]
flag.txtにはFlagっぽい文字列が並んでいます。
ZnvqnxrPGS{Pnrfne_rapelcgvba_vf_rnfl_gb_penpx}
ROT13臭がぷんぷんしています。
Flag:MaidakeCTF{Caesar_encryption_is_easy_to_crack}
Old input[200]
古い入力方法です。
6↑2444325533222↑8↑333↑{444↑66788→8_2224427772→222833777→7777_666→66_333→3328→8877733_744666→66337777_4447777_87776668822555337777666→633}
これがFlagになっているのは分かるかと思います。
問題はこれを何で入力したか、です。
古い...そう、ガラケーです。
ガラケーで番号のところをこの通りに押すとFlagになります。
↑は大文字で、→は決定です。
スマホでも携帯入力することはできるので、実際に押してみるといいかもしれません。
Flag:MaidakeCTF{Input_characters_on_feature_phones_is_troublesome}
Do you know XOR[300]
作問者が違うため、ここではwriteupの公開は控えます。
Flag:MaidakeCTF{You_know_the_characteristics_of_XOR}
Kancolle hash[300]
艦これハッシュ。
艦これとありますが、正直艦これはあまり関係ありません。
果たしてこれが暗号の問題なのかもよく分かりません。
暗号化の流れは以下の通りです。
keyを作る部分はなぜかproblem.pyにあるので、ascii変換とkeyから割る部分を逆にするだけです。
Flag:MaidakeCTF{I_love_kancolle_and_I_will_die_when_its_gone}
Caesar's Friends[400]
シーザーのお友達。
暗号化されたスピーチとともにFlagが書いてあるテキストファイルです。
一見するとROT13とか、何文字かズラすパターンのやつかと思われるかもしれません。
しかし、どうやらそういうわけでないようです。
Flag部分を観察してみると、CTFがちゃんと表示されているあたりから大文字は暗号化されていないことが分かります。
McstcpjCTF は MaidakeCTF のはずなので、この時点で5文字判明します。
c → a
s → i
t →d
p → a
j → e
もうお分かりでしょうか。ただの換字式暗号です。
明らかに確定できる部分から少しずつ対応表を作っていきます。
I のあとに続く2文字は am しかないよな~、みたいな感じで。
頻度分析なんかで埋めていくのも手です。
ある程度対応表が作れたら一度実行してみましょう。読めるようになってくるはずです。
進めていくうちにどこか見覚えのあるフレーズが出てくるかと思います。
当然です。かなり有名なスピーチですから。
最後のこれとか何もしなくても分かる人は分かるかもしれません。
Sfcx Hgykux.
Sfcx Fhhzsdm.
というわけでプログラムはこんな感じ。
ちなみにスティーブ・ジョブズのスピーチでした。
Flag:MaidakeCTF{Single_substitution_ciphers_are_not_very_strong_because_they_can_be_parsed_by_frequency_analysis}
SHA-1 collision[400]
SHA-1の衝突。
いつかのパクリです。これもサービス問題。
2つのファイルをアップロードできるページです。
タイトルの通り、SHA-1が衝突するようなファイルをアップロードすればいいのですが、同じファイルを2つアップロードすると失敗になります。
当然普通に違う2つのファイルをアップロードしてもダメです。
つまりはMD5が異なってSHA-1が同じになるようなファイルをアップロードすればいいわけです。
実はSHA-1が同じになるファイルはすぐに見つかります。
何年か前にSHA-1の衝突で話題になったときにたくさん出回っています。
それを見つけてきてアップロードするだけです。
Flag:MaidakeCTF{It_is_a_little_hard_to_create_a_file_where_SHA-1_collides}
Secret image[500]
作問者が違うため、ここではwriteupの公開は控えます。
Flag:MaidakeCTF{AES-ECB_mode_is_Vulnerable}