jueves, 23 de noviembre de 2017

Write-up "Mission#001"

Los participantes que han conseguido resolver el reto han sido publicados en la UAD de la misión. Tendréis el enlace en el apartado más información de esta página.
En primer lugar, enhorabuena a todos los que lo han sacado y espero que os lo hayáis pasado bien.


En segundo lugar, agradecer la aceptación que ha tenido el proyecto, esperamos que se mantenga en los próximos meses.

Pasamos a la explicación de como se resolvía este primer reto "Mission#001":
En el primer enlace, http://34.253.233.243/form1.php, se debía hacer un SQL injection a la base de datos.

Comprobamos las tablas que tiene la base de datos:



Los valores destacables son:

ID: - NAME: - STOCK: CLIENTS
ID: - NAME: - STOCK: PRODUCTS
ID: - NAME: - STOCK: SECRET


Comprobamos las columnas que tienen la tablas anteriormente mencionadas:




Los valores destacables son:

ID: PHARMA_CORP - NAME: CLIENTS - STOCK: ID
ID: PHARMA_CORP - NAME: CLIENTS - STOCK: NAME
ID: PHARMA_CORP - NAME: PRODUCTS - STOCK: ID
ID: PHARMA_CORP - NAME: PRODUCTS - STOCK: NAME
ID: PHARMA_CORP - NAME: PRODUCTS - STOCK: STOCK
ID: PHARMA_CORP - NAME: SECRET - STOCK: ID
ID: PHARMA_CORP - NAME: SECRET - STOCK: FLAG


Hacemos un SELECT  los campos ID y FLAG de la tabla SECRET:


Los valores destacables son:



Debemos descargar el fichero ".raw" del enlace y comprobar de que se trata. Para ello hacemos uso de la herramienta 'volatility'.


Podemos deducir que se trata de una captura de memoria RAM. De esta manera, procedemos a comprobar los ficheros que hay en la misma mediante el siguiente comando:



Al revisar los ficheros, llama la atención un 'secret.ods', así que vamos a dumpearlo:

0x000000003ef4da00

Abrimos el fichero, que nos pedirá que necesita ser reparado, y nos encontramos ante una tabla de información secreta:




Destaca el EXPEDIENT KEY del final que está medio escondido.



El formato parece base64, así que intentamos decodearlo.



Parece que sigue codificado, así que el string resultante lo volvemos a decodear.




Esto, empieza a parecerse al formato de la flag que escribimos en la UAD del reto. Así que intentamos ejecutar un algoritmo de desplazamiento tipo CAESAR a ver que nos puede salir.



Y listo, ya tenemos nuestra flag.

UAM{sUcc3ssfuL_z0mb13_3xP3r1MeNt}

Espero que se os haya hecho amena la lectura del proceso de conseguir la flag.
Si tenéis alguna duda/sugerencia, no dudéis en comunicarnoslo en 'unaalmes@hispasec.com'.


Daniel Púa
@arrowcode_
dpua@hispasec.com

Más información:
 
UAD del reto:
http://unaaldia.hispasec.com/2017/11/quieres-jugar-un-juego-demuestra-tus.html

5 comentarios:

  1. Consulta, soy nuevo en esto, lo traté de hacer llegué hasta descargar el .raw. Cómo te das cuenta que el .raw es una captura de una memoria ram???

    ResponderEliminar
  2. Buenas,

    Al final es la experiencia en este tipo de retos la que te da a pensar que puede ser. Pero la manera correcta sería revisando la cabecera del archivo para comprobarlo.

    Saludos.

    ResponderEliminar
  3. Hola.
    Este reto ya no está disponible en http://34.253.233.243/mission1.php
    ¿Sería posible dejar abiertos los retos aunque ya se hayan publicado las soluciones? No deja de ser un ejercicio muy intersante que sería una lástima hacerlo desaparecer. O si eso no fuera posible, al menos mantener un Github con los recursos necesarios para montarse uno mismo el reto en su propio LAMP (o lo que hiciera falta). Gracias

    ResponderEliminar
  4. Good to read this interesting technical post. Keep posting more tech blogs. Federal Criminal Defense Lawyer

    ResponderEliminar
  5. ¡Felicidades a los participantes que resolvieron el desafío de "Mission#001"! La explicación detallada sobre la resolución mediante SQL injection es valiosa. ¡Esperando más desafíos emocionantes!
    New Jersey Careless Driving Ticket

    ResponderEliminar