さえめろ の めも🐰

さえめろの備忘録です。twitter : @sae_mero_

ksnctf #5「Onion」

問題

ksnctf - 5 Onion



解答までの道

なんかブワーッと書いてある…。
攻撃を仕掛けてフラグを盗む!のような前問とは違い、この問題は暗号系みたいですね。

とは言っても暗号の法則はわからないので、まずはタイトルから推測してみました。
ググると一発でTorなるものを発見。

略さずに書くとThe Onion Routerでまさにオニオン。

でもあれ…これなんか違うな…?
おそらくこの問題はデコードしていけば答えが見つかるんじゃないか式のもので、TCP/IPではなさそう…。


結局デコード系問題頻出のbase64で試行錯誤をすることに。
1回デコードして見た感じ、1回でなんとかなりそうにもないので、pythonでデコードを繰り返すコードを書きました。

import base64

def decode(x):
    txt = "Vm0wd2QyUXlVWGxWV0d4V1Y---(略)---"
    for i in range(x):
        txt = base64.urlsafe_b64decode(txt)
    
    return txt

print(decode(1))

数値を増やして調べていったところ、x = 16 の時に出力が

begin 666 <data>
51DQ!1U]&94QG4#-3:4%797I74$AU

end

になりました。
多分ビンゴだ〜。

それまでの出力に比べていかにも怪しそうなので、begin 666でググってみるとuuencodeというものがヒット。
Unix to Unix ENCODE」の略で、バイナリデータをテキストデータに変換するらしい。

uudecodeというコマンドの使用でデコードできるっぽいので、先ほど出力された文をtxtファイルで保存してターミナルで実行。
txtファイル名はq5.txtです。

$ uudecode q5.txt
uudecode: q5.txt: <data>: character out of range: [33-96]

うまくいっていれば、同じディレクトリに新しいファイルが出来ます。

中身を見てみると無事flagがゲットできていました!




使ったものなど

uuencode
uuencode - Wikipedia
base64
Base64 - Wikipedia