Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@yuu26

SECCON 2016 Online CTF Writeup - Vigenere ※人力

More than 1 year has passed since last update.

Vigenere (Crypto, 100pts)

以下の暗号を解くと、flagが手に入ります。

k: ????????????
p: SECCON{???????????????????????????????????}
c: LMIG}RPEDOEEWKJIQIWKJWMNDTSR}TFVUFWYOCBAJBQ

k=key, p=plain, c=cipher, md5(p)=f528a6ab914c1ecf856a1d93103948fe

下記ページを参考に人力()で解きました。テクニカルな解法ではないです。
ヴィジュネル暗号: Axoluder`s blog
ヴィジュネル暗号 - Wikipedia

既知部分の復号

問題とともに提示されたヴィジュネル方陣を使用します。

venegere.png

縦軸(上段)を平文p、横軸(左列)を鍵kとした場合、クロスする文字が暗号化後の文字c。

平文が S のとき 暗号が L になる鍵は V
平文が E のとき 暗号が M になる鍵は I
平文が C のとき 暗号が I になる鍵は G

繰り返すことで、鍵の一部が判明します。残り5文字。
k: VIGENER?????

タイトル「Vigenere」から推測して、残り4文字。
k: VIGENERE????

ここで一度復号

行き詰まってしまったため、今ある鍵部分のみ復号してみます。
ヴィジュネル暗号では、鍵の長さが平文よりも短い場合、鍵を繰り返し適用することで暗号化/復号を行うそうです。

key: VIGENERE????

対応づけてみるとこんな感じです。

k  : VIGENERE???? VIGINERE???? VIGENERE???? VIGENER
p  : SECCON{????? ???????????? ???????????? ??????}
c  : LMIG}RPEDOEE WKJIQIWKJWMN DTSR}TFVUFWY OCBAJBQ

先ほどのヴィジュネル方陣と照らし合わせて、復号します。

k  : VIGENERE???? VIGINERE???? VIGENERE???? VIGENER
p  : SECCON{A???? BCDEDEFG???? KLMNOPQR???? VWXYYZ}
c  : LMIG}RPEDOEE WKJIQIWKJWMN DTSR}TFVUFWY OCBAJBQ

どうやら、A~Zを並べた文字列のようです。

p : SECCON{A????BCDEDEFG????KLMNOPQR????VWXYYZ}

ここから力技

鍵の残り4文字を探し当てる必要があります。
k: VIGENERE????

まずは、平文の空白を推測して埋めてみました。

             BABB        HIIJ        STTU
p  : SECCON{A????BCDEDEFG????KLMNOPQR????VWXYYZ}
    ↓
p  : SECCON{ABABBBCDEDEFGHHIJKLMNOPQRSTTUVWXYYZ}

(推測で)埋めた平文を用いて鍵を推測します。

             CODD         COEE         BODE
k  : VIGENERE???? VIGINERE???? VIGENERE???? VIGENER
p  : SECCON{ABABB BCDEDEFGHIIJ KLMNOPQRSTTU VWXYYZ}
c  : LMIG}RPEDOEE WKJIQIWKJWMN DTSR}TFVUFWY OCBAJBQ

3つの候補 CODD , COEE , BODE から、鍵の残り部分を CODE と仮定しました。
key: VIGENERECODE → ヴィジュネルコード でしょうか。

flag取得

鍵が判明したので、残り部分も復号します。

k  : VIGENERECODE VIGINERECODE VIGENERECODE VIGENER
p  : SECCON{A???? BCDEDEFG???? KLMNOPQR???? VWXYYZ}
c  : LMIG}RPEDOEE WKJIQIWKJWMN DTSR}TFVUFWY OCBAJBQ

 ↓

k  : VIGENERECODE VIGINERECODE VIGENERECODE VIGENER
p  : SECCON{ABABA BCDEDEFGHIJJ KLMNOPQRSTTU VWXYYZ}
c  : LMIG}RPEDOEE WKJIQIWKJWMN DTSR}TFVUFWY OCBAJBQ

 ↓

SECCON{ABABABCDEDEFGHIJJKLMNOPQRSTTUVWXYYZ}

flagが判明し、投稿したところ正解でした。
ヴィジュネル暗号自体を知らなかったこともあり、暗号の理解から始めて2時間以上を要しました。次回はもっとスマートな解き方をしてみたいところです。

2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
yuu26
インフラ分野に興味のあるエンジニアです。 https://spla2.yuu26.com なども作りました。 最近の新しい記事はブログに書いています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?