今回の問題
picoCTFより"interencdec"を解いていきます。
実際に解いていく
1. 問題文を確認する
以下の暗号が書かれたファイルをダウンロードできました。
YidkM0JxZGtwQlRYdHFhR3g2YUhsZmF6TnFlVGwzWVROclh6YzRNalV3YUcxcWZRPT0nCg==
それでは、この暗号を解読していきます。
2. 暗号の特徴を書き出す
この暗号の特徴を以下に書き出します。
- a ~ z, A ~ Z までのアルファベットが使用されている
- 数字が使用されている
- 一番後ろに = がついている
以上より、Base64だと予想しました。
3. 解読する
Base64でデコードしてみると、暗号が以下のようになりました。
b'd3BqdkpBTXtqaGx6aHlfazNqeTl3YTNrXzc4MjUwaG1qfQ=='
ここからシングルクオーテーションで囲まれた部分を取り出して
d3BqdkpBTXtqaGx6aHlfazNqeTl3YTNrXzc4MjUwaG1qfQ==
再び、Base64でデコードします
すると、暗号が以下のようになりました
wpjvJAM{jhlzhy_k3jy9wa3k_78250hmj}
最後にROT13でデコードします。
今回は変化量を 13 → 19 にしました。理由は、先頭の「w」を「p」にするには、19個アルファベット順に動かす必要があるからです。
これにて、FLAG
picoCTF{caesar_d3cr9pt3d_78250afc}
を獲得することができました。お疲れ様でした。
もう少し考えてみる
今回の暗号が、なぜ Base64 だとわかったのでしょうか?
それは、今回の暗号の特徴がBase64の特徴に当てはまっていたからです。
Base64 の特徴
- A-Z, a-z, 0-9 (62 の文字と数字)
- ' + ' と ' / ' (2 つの特殊文字)
- = (パディングに使用される)
(Base64 に関して知っておくべきすべてより引用)
まとめ
今回の暗号は、Base64→Base64→ROT13 の順にデコードをすることでFLAGを獲得することができました。
暗号の特徴を見て、どの暗号に当てはまるかを見極めることがポイントでした。
補足
・なし