Una-al-mes Mission 004 Writeup

Una-al-mes Mission 004 Writeup

Muy buenas a todos, hoy os traigo un write-up del unaalmes #4 de Hispasec:

Web

Accedemos a la URL del reto y nos encontramos con que no podemos acceder por no usar el “Navegador oficial”. Podemos pelearnos con Burp o con Curl o cualquier herramienta del estilo pero se hace mucho mas sencillo usando una extensión de chrome: Chrome UA spoofer

 

Probamos varias de las opciones y descubrimos que el user-agent necesario es el correspondiente a IE10, con lo cual desbloqueamos una pagina de autenticación

 

 

Web + Crypto

Probamos con el usuario test con contraseña test como nos sugiere el formulario y comprobamos que nuestra sesión queda iniciada. Esto tiene que ser por culpa de alguna cookie. De hecho, podemos ver esa cookie desde la consola de desarrollador de nuestro navegador:

Cookie:token=qTImqPNtVPNtVN==
Parece base64, pero al descodificarlo nos da algo raro, así que probamos todas las combinaciones de ROT con el base64 sin decodificar para después decodificarlas . Descubrimos que se le ha aplicado un ROT13 después de pasarlo a base64, dado que al seguir los pasos a la inversa transforma en “test”, que es el usuario introducido.

 

Pensándolo bien, esto es bastante obvio, porque la página está hecha en php y en php viene por defecto solamente la función str_rot13().
Siguiendo este razonamiento, podemos pasar a base64 “fry” (nuestro protagonista) y después aplicarle el mismo ROT13, que lo transforma en “MaW5”. Lo usamos como cookie:
Cookie:token=MaW5
Funciona, nos loguea como Fry y nos da un enlace a una descarga: http://goo.gl/9ThNnA

 

Reversing

Tras descargar el archivo tenemos un zip con un ejecutable y un archivo dentro.
Vamos a concentrarnos en el ejecutable.
Al lanzarlo, nos pide un numero de canción:

Tras probar varios, nos reproduce la melodía de Mario Bros con los números menores de 10, pero nos dice que “Lo vamos entendiendo” si usamos uno mayor. Sin más información que eso y el tipo de ejecutable (Windows x64), vamos a pasar a hacer reversing.

 

En esta ocasión he utilizado x64dbg. Para ello he ejecutado un powershell y he lanzado el ejecutable, como anteriormente, pero esta vez, antes de introducir el número he adherido mi debugger al proceso (File->Attach->test.exe).

 

Sin mas dilación he ido directamente a las referencias a cadena con Botón derecho -> Search for -> All modules -> String references.
He ido a la dirección de memoria de una de las frases que me lanzaba el programa para ir rápido a la acción y he observado el código.

 

El programa no avanza porque nos obliga a introducir un número mayor que 9. Tras un par de comprobaciones más del estilo, descubrimos que el número a introducir es 101. Lo lanzamos, introducimos 101 y el programa toca la canción de futurama y nos pregunta de dónde es. En el código se ve claramente que “futurama” es la respuesta, la introducimos y dejamos que el programa ejecute con normalidad. Hace unas cuántas operaciones con el archivo que venía en el zip (las cuales ha sido irrelevante entender para obtener la solución, pero supongo que lo desncripta de alguna manera) y nos muestra en pantalla la flag.

 

 

UAM{m4y_th3_f0rc3_b3_w1th_y0u}

 

¡Un saludo y muchas gracias!

 

Deja un comentario

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

ocho + seis =

A %d blogueros les gusta esto: