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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *