S4CTF 2021 Writeup

この大会は2021/4/23 2:30(JST)~2021/4/25 2:30(JST)に開催されました。
今回もチームで参戦。結果は151点で312チーム中88位でした。
自分で解けた問題をWriteupとして書いておきます。

S4CTF{Are_You_Alive!} (BONUS)

問題タイトルがフラグになっている。

S4CTF{Are_You_Alive!}

Baby-XoR (CRYPTO (JUNIOR))

この暗号では、flagの各文字を次の文字とXORしていく。最後の文字は先頭の文字とXORしている。先頭の文字のブルートフォースにより、復号する。

with open('flag.enc', 'rb') as f:
    enc = f.read()

for code in range(32, 127):
    flag = chr(code)
    for i in range(len(enc) - 1):
        flag += chr(ord(enc[i]) ^ ord(flag[i]))
    if 'S4CTF{' in flag:
        print flag
        break

復号結果は以下の通り。

the flag is: S4CTF{XOR_x0r_XoR_X0r_xOr!!!}
S4CTF{XOR_x0r_XoR_X0r_xOr!!!}