dCTF 2021: This one is really basic
Resolviendo un reto recursivo de base64 con un pequeño script de decodificación.
Writeup original del reto: This one is really basic.md
La descripción del reto era:
The answer to life, the universe, and everything.
Solución
El reto nos dio un archivo cipher.txt con miles y miles de caracteres.
Estaba codificado recursivamente en base64. Probamos CyberChef y el repo basecrack en GitHub, pero ninguno funcionó con este archivo.
La pista era que el string codificado empezaba con Vm0. Buscar b64 Vm0 mostró que, por alguna razón, si codificás un string en base64 suficientes veces, eventualmente empieza con el mismo prefijo.
Eso significaba que el reto probablemente no estaba alternando entre encodings como base32 o base58. Era simplemente base64 una y otra vez.
Así que escribí este pequeño script:
import base64
# original = open("cipher.txt", r)
with open("cipher.txt", "r") as f:
b64 = base64.b64decode(f.read()).strip()
for i in range(42):
b64 = base64.b64decode(b64)
print(b64)
Eventualmente el script lanza una excepción y crashea, pero eso fue suficiente. Antes de crashear, imprime la flag:
dctf{Th1s_l00ks_4_lot_sm4ll3r_th4n_1t_d1d}