0
1

More than 3 years have passed since last update.

# 【CTF】SECCON2019 writeup

Last updated at Posted at 2019-10-20

SECCON 2019の解答
floretとして2人で参加
WelcomeとThank you for playing!含めて3問しか解けなかった。。。

# [crypto]coffee_break

### 問題文

The program "encrypt.py" gets one string argument and outputs ciphertext.

Example:

``````\$ python encrypt.py "test_text"
gYYpbhlXwuM59PtV1qctnQ==

The following text is ciphertext with "encrypt.py".
FyRyZNBO2MG6ncd3hEkC/yeYKUseI/CxYoZiIeV2fe/Jmtwx+WbWmU1gtMX9m905
``````

encrypt.py

``````import sys
from Crypto.Cipher import AES
import base64

def encrypt(key, text):
s = ''
for i in range(len(text)):
s += chr((((ord(text[i]) - 0x20) + (ord(key[i % len(key)]) - 0x20)) % (0x7e - 0x20 + 1)) + 0x20)
return s

key1 = "SECCON"
key2 = "seccon2019"
text = sys.argv[1]

enc1 = encrypt(key1, text)
cipher = AES.new(key2 + chr(0x00) * (16 - (len(key2) % 16)), AES.MODE_ECB)
p = 16 - (len(enc1) % 16)
enc2 = cipher.encrypt(enc1 + chr(p) * p)
print(base64.b64encode(enc2).decode('ascii'))

``````

### 解法

AESの鍵は分かっているので暗号文を復号してenc1を求める。
それを実際にencrypt.pyのenc1と比較すると

``````import sys
import base64
from Crypto.Cipher import AES
# For debugging
from IPython import embed
from IPython.terminal.embed import InteractiveShellEmbed

key1 = "SECCON"
key2 = "seccon2019"
text = sys.argv[1]

def encrypt(key, text):
s = ''
for i in range(len(text)):
s += chr((((ord(text[i]) - 0x20) + (ord(key[i % len(key)]) - 0x20)) % (0x7e - 0x20 + 1)) + 0x20)
return s

def decrypt(text):
cipher_data = base64.b64decode(text)
crypto = AES.new(key2 + chr(0x00) * (16 - (len(key2) % 16)), AES.MODE_ECB)
enc2 = crypto.decrypt(cipher_data)
enc1 = enc2.split()[0].decode('ascii')
# Brute-force attack
flag = ''
for i in range(len(enc1)):
for j in range(32,128):
estimate_of_enc1 = encrypt(key1, flag + chr(j))
if(enc1[:i+1] == estimate_of_enc1):
flag += chr(j)
break
return flag

flag = decrypt(text)
print(flag)
``````

これでflagゲット

``````\$ python decrypt.py FyRyZNBO2MG6ncd3hEkC/yeYKUseI/CxYoZiIeV2fe/Jmtwx+WbWmU1gtMX9m905
SECCON{Success_Decryption_Yeah_Yeah_SECCON}
``````

# [Misc]Beeeeeeeeeer

Let's decode!

### 解法

fileコマンドで確認すると、でかめのASCIIファイルであることが分かる。

`#bin/bash`をつけて実行するとEとFがアニメーション風に表示され結果的に以下のようになる

shellは一行で書かれていて中身が見づらいので改行を入れる

``````f = open("入力ファイル名")
fout = open("出力ファイル名", "w")
f.close()
fout.close()
``````

すると中に異常に長いbase64の行があるのでその部分を抜き出して実行すると
beep音が1～10回鳴ってその回数を入力するよう求められる。
ある程度入力すると以下の画面となる

プログラム冒頭の`\$((RANDOM % 10 +1));`からbeep音が1~10回なることが予想でき

base64で書かれた部分をデコードして

``````ZWNobyAtbmUgJ1xhJztzbGVlcCAxO2VjaG8gLW5lICdcYSc7c2xlZXAgMTtlY2hvIC1uZSAnXGEnO3NsZWVwIDE7ZWNobyAiSG93IG1hbnkgYmVlcHM/IjsK|
↓
echo -ne 'a';sleep 1;echo -ne 'a';sleep 1;echo -ne 'a';sleep 1;echo "How many beeps?";
``````

そして以下の\$nが3であることも分かるので

``````\$(echo -n \$n|md5sum |cut -c2,3,5,12) -md md5 2>/dev/null | bash;
↓
\$(echo -n 3|md5sum |cut -c2,3,5,12) -md md5 2>/dev/null;
``````

と書き換えてshellとして実行すると

``````__=\$(. 2>&1);__=\${__##*.};__=\$(. 2>&1);__=\${__##*.};\${__:\$((\$[(\$[\$\$/\$\$]<<\$[\$\$/\$\$]<<\$[\$\$/\$\$]<<\$[\$\$/\$\$])+\$[\$\$/\$\$]]+\$[(\$[\$\$/\$\$]<<\$[\$\$/\$\$]<<\$[\$\$/\$\$]<<\$[\$\$/\$\$])+\$[\$\$/\$\$]]+\$[\$\$/\$\$])):\$((___=___^___||++___))}\${__:\$[\$[\$\$/\$\$]<<\$[\$\$/\$\$]<<\$[\$\$/\$\$]]:\$((___=___^___||++___))}\${__:\$((\$[(\$[\$\$/\$\$]<<\$[\$\$/\$\$]<<\$[\$\$/\$\$]<<\$[\$\$/\$\$])+\$[\$\$/\$\$]]+\$[(\$[\$\$/\$\$]<<\$[\$\$/\$\$]<<\$[\$\$/\$\$]<<\$[\$\$/\$\$])+\$[\$\$/\$\$]])):\$((___=___^___||++___))} -- {z..A};\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((____=____^____||++____))\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____)))):\$((____=____^____||++____))}\${@:\$((____=____^____||++____))\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))} "\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____))))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((____=____^____||++____))\$((\$((____=____^____||++____))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))-\$((____=____^____||++____)))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))}\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____)))):\$((____=____^____||++____))} \${@:\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))-\$((____=____^____||++____)))):\$((____=____^____||++____))}\${@:\$((____=____^____||++____))\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____)))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))} \${@:\$((____=____^____||++____))\$((____=____^____||++____)):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((____=____^____||++____))\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))}\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____)))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=____^____||++____))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}";\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____)))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=____^____||++____))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))} _____</\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=____^____||++____))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))}\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____)))):\$((____=____^____||++____))}/\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))-\$((____=____^____||++____)))):\$((____=____^____||++____))}\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))-\$((____=____^____||++____)))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))};: \${@:\$((____=____^____||++____))\$((____=____^____||++____)):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((____=____^____||++____))\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))}\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____)))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=____^____||++____))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))} \${@:\$((____=____^____||++____))\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))} \${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____)))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((____=____^____||++____))\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____)))):\$((____=____^____||++____))};\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((____=____^____||++____))\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____)))):\$((____=____^____||++____))}\${@:\$((____=____^____||++____))\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))} \$(\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((____=____^____||++____))\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____)))):\$((____=____^____||++____))}\${@:\$((____=____^____||++____))\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))} -\${@:\$((____=____^____||++____))\$((\$((____=____^____||++____))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))} \$_____|\${@:\$((____=____^____||++____))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=____^____||++____))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____))))\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((____=____^____||++____))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}|\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))-\$((____=____^____||++____)))):\$((____=____^____||++____))} -\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=____^____||++____))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}" " -\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((____=____^____||++____)):\$((____=____^____||++____))}\$((____=____^____||++____)))|\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=____^____||++____))-\$((____=____^____||++____)))):\$((____=____^____||++____))}\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____)))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))}\${@:\$((____=____^____||++____))\$((____=____^____||++____)):\$((____=____^____||++____))} -\${@:\$((____=____^____||++____))\$((\$((____=____^____||++____))-\$((____=____^____||++____)))):\$((____=____^____||++____))} "\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=____^____||++____))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____))))\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))-\$((____=____^____||++____))))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))))\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=____^____||++____))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))))\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____)))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____)))):\$((____=____^____||++____))}\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))))\$((\$((____=____^____||++____))-\$((____=____^____||++____))))\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))))\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))))\$((____=____^____||++____))\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))-\$((____=____^____||++____))))\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____))))\$((____=____^____||++____))\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))))\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____))))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))))\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____))))\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____))))\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____))))\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))}\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))))\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____))))"&&\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))}\${@:\$((____=____^____||++____))\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____)))):\$((____=____^____||++____))}\${@:\$((____=____^____||++____))\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))} "\${@:\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____))))\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))}\${@:\$((____=____^____||++____))\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))}\${@:\$((____=____^____||++____))\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=____^____||++____))+\$((____=(____^____||++____)+(____^____||++____))))):\$((____=____^____||++____))} \${@:\$((\$((____=(____^____||++____)+(____^____||++____)))+\$((____=(____^____||++____)+(____^____||++____)))))\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____)))):\$((____=____^____||++____))}\${@:\$((____=____^____||++____))\$((____=(____^____||++____)+(____^____||++____))):\$((____=____^____||++____))}\${@:\$((____=(____^____||++____)+(____^____||++____)))\$((\$((____=(____^____||++____)+(____^____||++____)))*\$((____=(____^____||++____)+(____^____||++____)))+\$((____=____^____||++____)))):\$((____=____^____||++____))}!"&&printf "\n\033[?7l%1024s" " "&&echo SECCON{\$S1\$n\$_____};echo -e '\033[?7h';
``````

``````echo SECCON{\$S1\$n\$_____};
``````

とあり、`\$S1``\$n``\$_____`が分かればflagが取得できると分かる

``````bash -x
``````

で難読化に関係なく最終的に評価されたコマンドが見れると分かり、

``````bash -x hogehoge.sh
``````

で実行すると`\$_____`がpasswordと同じであることが分かった。

しかしこの状態では`\$_____`しか分かってないのでまだflagではない。

ここでプログラムが結果的に3つに分かれたのを思い出し、それぞれのファイルで定義されている部分を調査。

`\$n`は既に3だと分かっているので残りは`\$S1`

`\$_____`は3つ目、`\$n`は2つ目のファイルから分かったので

1つ目のファイルを確認すると

`\$'\u0053\u0031'=\$(echo aG9nZWZ1Z2EK |base64 -d);`という部分を発見

base64っぽい部分があったので複合して

``````aG9nZWZ1Z2EK
↓
hogefuga
``````

`SECCON{\$S1\$n\$_____}`に各変数の値を代入してflagゲット！

``````SECCON{hogefuga3bash}
``````

### 感想など

4問解いたけど1問は時間オーバーだし、2問は答えそのまま。

### 参考にしたサイト

0
1
1

Register as a new user and use Qiita more conveniently

1. You get articles that match your needs
2. You can efficiently read back useful information
3. You can use dark theme
What you can do with signing up
0
1