Hidden Cipher 1 writeup

Descripción
The flag is right in front of you; just slightly encrypted. All you have to do is figure out the cipher and the key. You can download the program files here.
Hidden Cipher 1 solución
Descargamos el archivo, lo descomprimimos y analizamos con ghidra para ver el cifrado que se realiza sobre la flag:
unzip hiddencipher.zip
Sin embargo, al abrirlo con ghidra, no podremos ver el nombre de las funciones y el código estará ligeramente ofuscado. Esto se debe a que el binario ha sido comprimido con UPX. Podemos confirmarlo con el siguiente comando:
trings hiddencipher | grep -i upx

Descargamos UPX y descomprimimos el binario para analizarlo con Ghidra:
sudo apt-get install upx-ucl
upx -d hiddencipher
ghidra
Al abrir ahora el archivo, podremos ver el nombre de las funciones. En main() encontramos la flag codificada:
__stream = fopen("flag.txt","rb");
...
fread(__ptr,1,__n,__stream);
...
puVar2 = get_secret();
...
puts("Here your encrypted flag:");
for (local_2c = 0; (long)local_2c < (long)__n; local_2c = local_2c + 1) {
printf("%02x",(uint)(*(byte *)((long)puVar2 + (long)(local_2c % 6)) ^
*(byte *)((long)__ptr + (long)local_2c)));
}
‘__ptr‘ es el contenido cargado en memoria del archivo con la flag y ‘puVar2‘ apunta a la función ‘get_secret()‘:
undefined7 * get_secret(void){
s.0._0_1_ = 0x53;
s.0._1_1_ = 0x33;
s.0._2_1_ = 0x43;
s.0._3_1_ = 0x72;
s.0._4_1_ = 0x33;
s.0._5_1_ = 0x74;
s.0._6_1_ = 0;
return &s.0;
}
En este caso, el código está realizando un XOR (^) bit a bit con la flag y el secreto. Dado que XOR es reversible, podemos obtener la flag volviendo a aplicar el mismo método sobre el contenido cifrado.
Lanzaremos la instancia y obtendremos la flag cifrada para descifrarla:

Introduciremos esta cadena de caracteres en cyberchef junto con la contraseña que hemos encontrado en el código. Como el print del código tiene ‘»%02x»‘, debemos añadir a la receta ‘To Charcode’ para pasar de hexadecimal a caracteres:

Completando así el CTF.
Consultor de ciberseguridad especializado en continuidad de negocio y respuesta ante incidentes. Interesado en analizar tecnologías desde una perspectiva de seguridad y descubrir su comportamiento real.
