読者です 読者をやめる 読者になる 読者になる

TUM CTF Teaser Writeup

CTF writeup

この大会は2015/10/24 22:00(JST)~2015/10/25 22:00(JST)に開催されました。
予定では21:00スタートだったのが、1時間遅れのスタートになりました。
今回も個人で参戦。結果は1点で220位でした。
参加チームは476チームで、半分弱の232チームが0点だったようで、
この大会も比較的難しかった大会でした。
唯一解けた問題をWriteupとして書いておきます。

Sanity Check (Misc 1)

問題はこれ。

Vm0wd2QyUXlWa2hWV0doVVYwZG9jRlZ0TVZOWFZsbDNXa1JTVjFac2JETlhhMUpUVmpGYWMySkVU
bGhoTVVwVVZtcEJlRll5U2tWVQpiR2hvVFZWd1ZWWnFRbUZUTWsxNVUydFdWUXBpU0VKWVZtMTRk
MVZXV25GVGFsSmFWakF4TkZaSE5VOVhRWEJwVWpGS1ZWWkdVa2RUCk1WWlhXa1prWVZKR1NsVlVW
M040VGtaa2NtRkdaR2hSV0VKVVdXdG9RMWRXWkZobFIzUnBDazFFUm5wV01qVkxXVlpPU1ZGdVRs
WmkKVkVaVVZURmFZV1JIVWtsVWJXaGhUVEJLVlZkWGVHdGlNbEp6VjJ0a1dHSlViRk5EYXpGelYy
eG9WMDFYYUhaV01HUkxWMVpXYzFacwpWbGNLWWtoQ05sWkhkR0ZaVms1R1RsWmFhMUp0YUZOV01G
WkxaREZhV0UxRVJsSk5WMUpZVjJ0b1QxbFdTa1pUYlVaRVlrWnNNMWxyClVsTlhSMFY0WTBoS1Yy
SlVSa2RhVmxwWFl6RmFjd3BqUjJ0TFZXMDFRMkl4V25GUmJVWnFZbFpHTkZZeU5VOVpWa3AwWVVa
T1YwMUcKV2t4YVJFWmhWMGRPUm1SSGJFNVdia0paVm1wS05HSXlTa2RUYWxwcFVtczFSVmxzVm5k
WFJsbDVDazVZWkZkTlJFWXhWbGMxUzFZdwpNVWhWYTNoWFRWWndXRmw2Um1GamQzQlhZa2RPVEZa
R1VrdGlNVkpYVjJ4V1VtSlZXbkZaYkZwSFRrWlplVTVXWkZkV01IQkpWbGQ0CmExWXdNVWNLVjJ0
NFlWSXphSEpaZWtaM1VsWldjMk5HWkdsU2JrSktWbXBLTUdJeFVYaGlSbVJVWVRGd1ZWbHJXbUZT
Vm14WlkwVmsKV0ZKc1ZqVkRiVlpJVDFaa2FWWllRa3BYVmxadlpERlpkd3BOV0VaVFlrZG9hRlZz
WkZOWFJsWnhVbXM1YW1RelFtaFZiVEZQVkVaawpXR1ZHV210TmJFWTBWakowVjFVeVNraFZiRnBW
VmpOU00xcFhlRmRYUjFaSFdrWldhVkpZUW1GV2EyUXdDazVHU2tkalJGbExWRlZTCmMxSkdjRFpO
Ukd4RVdub3dPVU5uUFQwSwo=

最後の「=」から考えると、BASE64かな。
BASE64デコードしてみても、よくわからない文字列。
もしかしたら、何回かBASE64エンコードしているのかも・・・
ということでもう一度BASE64デコードしてみる。
いい加減面倒になってきたので、次のようなスクリプトを書いてみた。

import base64

f = open('encode.txt', 'r')
data = f.read()
f.close()

while True:
    try:
        data = data.replace("\n","")
        data = data.decode('base64')
        print data
    except:
        print 'BASE64 decode error!'
        break

このスクリプトを実行したら、次のように表示されて、フラグをゲット!

Vm0wd2QyVkhVWGhUV0docFVtMVNXVll3WkRSV1ZsbDNXa1JTVjFac2JETlhhMUpUVmpBeFYySkVU
bGhoTVVwVVZqQmFTMk15U2tWVQpiSEJYVm14d1VWWnFTalJaVjAxNFZHNU9XQXBpUjFKVVZGUkdT
MVZXWkZkYVJGSlVUV3N4TkZkcmFGZGhRWEJUWWtoQ1dWZFhlR3RpCk1ERnpWMjVLWVZOSVFuTlZi
VEZUVTFaYWRHUklUbWhhTTBKVVdXeGtiMlJzV2tkWGJUbFNDazFzV2xoV01XaHZWMGRLV1ZWc1Zs
VlcKYkhCNlZHdGFZVk5GTlZaa1JtaFNWMFZLZDFaWE1ERlJNV1JYV2toT1lWSkZTbUZEYkZsM1lr
UlNXR0V4Y0hKV2JURkdaVlpXYzFacwpjR2tLVW01Q2IxWnFRbUZqYlZGNFYyNU9ZVkp0YUZOV01G
WkxaREZhV0dORmRHbE5WbkJZVmpKNGIySkdTalppUms1RVlsVndXRll5Ck5YZFdNREYxVlc1S1Yw
MUhVa3hXTVZwWFl6RmFjd3BXYkdOTFZGUktiMVJXV2xWUmJVWnFZbFpHTkZZeU5WZFdWMHBJVld4
a1YwMUcKV2t4YVIzaHJZekZ3UlZWc2NGZGlSbkJKVmpKMGIxUXhiRmRUYTFwVVlrWmFSVmxZY0Vk
WFJsVjVDbVZIT1ZkaVZYQkpXVlZvZDFZdwpNWEZTYkdoaFVsZFNXRlZxUms5amQzQmhVbTFPVEZk
WGVGWmtNbEY0VjJ0V1UySkhVbFpVVjNSM1pXeFdXR1ZHWkZWaVJYQmFWa2QwCk5GSkdjRFlLVFVS
c1JGcDZNRGxEWnowOUNnPT0K

Vm0wd2VHUXhTWGhpUm1SWVYwZDRWVll3WkRSV1ZsbDNXa1JTVjAxV2JETlhhMUpUVjBaS2MySkVU
bHBXVmxwUVZqSjRZV014VG5OWApiR1JUVFRGS1VWZFdaRFJUTWsxNFdraFdhQXBTYkhCWVdXeGti
MDFzV25KYVNIQnNVbTFTU1ZadGRITmhaM0JUWWxkb2RsWkdXbTlSCk1sWlhWMWhvV0dKWVVsVlVW
bHB6VGtaYVNFNVZkRmhSV0VKd1ZXMDFRMWRXWkhOYVJFSmFDbFl3YkRSWGExcHJWbTFGZVZWc1Zs
cGkKUm5Cb1ZqQmFjbVF4V25OYVJtaFNWMFZLZDFaWGNFdGlNVnBYVjJ4b2JGSjZiRk5EYlVwWFYy
NXdWMDF1VW5KV01HUkxWMVpXYzFacwpWbGNLVFRKb1RWWlVRbUZqYlZGNFYyNVdWV0pIVWxkV01G
WkxaR3hrYzFwRVVscFdiRnBJVjJ0b1QxbFdTa1pUYkZaRVlYcEdXRlV5CmVHOVdiVXBJWVVod1Yw
MXFSbGhhUldSWFVqRk9jd3BhUm1OTFdXeFZkMlF4V2tWU2JHUlZUV3R3ZWxWWGVGZFViRXBaVkd0
NFJGcDYKTURsRFp6MDlDZz09Cg==

Vm0weGQxSXhiRmRYV0d4VVYwZDRWVll3WkRSV01WbDNXa1JTV0ZKc2JETlpWVlpQVjJ4YWMxTnNX
bGRTTTFKUVdWZDRTMk14WkhWaApSbHBYWWxkb01sWnJaSHBsUm1SSVZtdHNhZ3BTYldodlZGWm9R
MlZXV1hoWGJYUlVUVlpzTkZaSE5VdFhRWEJwVW01Q1dWZHNaREJaClYwbDRXa1prVm1FeVVsVlpi
RnBoVjBacmQxWnNaRmhSV0VKd1ZXcEtiMVpXV2xobFJ6bFNDbUpXV25wV01uUnJWMGRLV1ZWc1Zs
VlcKTTJoTVZUQmFjbVF4V25WVWJHUldWMFZLZGxkc1pEUlpWbFpIV2toT1lWSkZTbFZEYXpGWFUy
eG9WbUpIYUhwV01qRlhaRWRXUjFOcwpaRmNLWWxVd2QxWkVSbGRVTWtwelVXeFdUbEpZVGt4RFp6
MDlDZz09Cg==

Vm0xd1IxbFdXWGxUV0d4VVYwZDRWMVl3WkRSWFJsbDNZVVZPV2xac1NsWldSM1JQWVd4S2MxZHVh
RlpXYldoMlZrZHplRmRIVmtsagpSbWhvVFZoQ2VWWXhXbXRUTVZsNFZHNUtXQXBpUm5CWVdsZDBZ
V0l4WkZkVmEyUlVZbFphV0Zrd1ZsZFhRWEJwVWpKb1ZWWlhlRzlSCmJWWnpWMnRrV0dKWVVsVlVW
M2hMVTBacmQxWnVUbGRWV0VKdldsZDRZVlZHWkhOYVJFSlVDazFXU2xoVmJHaHpWMjFXZEdWR1Ns
ZFcKYlUwd1ZERldUMkpzUWxWTlJYTkxDZz09Cg==

Vm1wR1lWWXlTWGxUV0d4V1YwZDRXRll3YUVOWlZsSlZWR3RPYWxKc1duaFZWbWh2VkdzeFdHVklj
RmhoTVhCeVYxWmtTMVl4VG5KWApiRnBYWld0YWIxZFdVa2RUYlZaWFkwVldXQXBpUjJoVVZXeG9R
bVZzV2tkWGJYUlVUV3hLU0Zrd1ZuTldVWEJvWld4YVVGZHNaREJUCk1WSlhVbGhzV21WdGVGSldW
bU0wVDFWT2JsQlVNRXNLCg==

VmpGYVYySXlTWGxWV0d4WFYwaENZVlJVVGtOalJsWnhVVmhvVGsxWGVIcFhhMXByV1ZkS1YxTnJX
bFpXZWtab1dWUkdTbVZXY0VWWApiR2hUVWxoQmVsWkdXbXRUTWxKSFkwVnNWUXBoZWxaUFdsZDBT
MVJXUlhsWmVteFJWVmM0T1VOblBUMEsK

VjFaV2IySXlVWGxXV0hCYVRUTkNjRlZxUVhoTk1XeHpXa1prWVdKV1NrWlZWekZoWVRGSmVWcEVX
bGhTUlhBelZGWmtTMlJHY0VsVQphelZPWld0S1RWRXlZemxRVVc4OUNnPT0K

V1ZWb2IyUXlWWHBaTTNCcFVqQXhNMWxzWkZkYWJWSkZVVzFhYTFJeVpEWlhSRXAzVFZkS2RGcElU
azVOZWtKTVEyYzlQUW89Cg==

WVVob2QyVXpZM3BpUjAxM1lsZFdabVJFUW1aa1IyZDZXREp3TVdKdFpITk5NekJMQ2c9PQo=

YUhod2UzY3piR013YldWZmREQmZkR2d6WDJwMWJtZHNNMzBLCg==

aHhwe3czbGMwbWVfdDBfdGgzX2p1bmdsM30K

hxp{w3lc0me_t0_th3_jungl3}

BASE64 decode error!
hxp{w3lc0me_t0_th3_jungl3}