WRITEUP CTF CIDSI 2021

WriteUp 26 de ene. de 2022

Hola de nuevo, este CTF se llevó a cabo en el Congreso Internacional De Seguridad Informática (CIDSI) y organizado por la Agencia de Gobierno Electrónico y Tecnologías de Información y Comunicación (AGETIC) en diciembre del 2021, en esta ocasión la participación fue individual, y como miembros de SCESI y representando a la UMSS obtuvimos buenos puestos en la tabla de puntaje final, Gary que en su primer CTF quedó 6to,  Israel obtuvo el 3er lugar y mi persona logró el 2do lugar en la competencia.

Puntos: 105

El desarrollador junior llamó desde su nuevo trabajo y nos comenta que nos dejó un mensaje de fin de año, revisamos los servidores donde tenía acceso y encontramos una página web con un árbol de navidad. Pero no pudimos encontrar el mensaje, ¿nos ayudas?

Ingresando al link que nos proporciona el reto podemos visualizar una página web la cual contiene la imagen de un árbol de navidad, si inspeccionamos el código fuente podemos ver un script en javascript llamado navidad.js.

Si vemos el contenido del script encontraremos una función llamada getFlag() con el siguiente mensaje cifrado:

MZWGCZ33IVWCAY3PMRUWO3ZANVQXGIDENFTGSY3JNQQGIZJAMNXXE4TFM5UXEIDFOMQGC4LVMVWCAZDFNQQHC5LFEBYGSZLOONQXGIDROVSSAZLTEBUW24DPONUWE3DFEBYXKZJAMFWGO3ZAMVZXIYJANVQWYLT5

Podemos utilizar una herramienta online como cyberchef, al parecer está cifrada en Base32, una vez descifrado obtenemos la flag:

flag{El código más difícil de corregir es aquel del que piensas que es imposible que algo está mal.}

Crackeando evidencias

Puntos: 115
Encuentra la contraseña del PDF y la flag será tuya.

Para el siguiente reto se no proporciona un archivo zip, si vemos el contenido encontramos dos archivos, un PDF que está protegido con contraseña y una imagen que será nuestra pista.

Si analizamos los metadatos de la imagen pista.jpg en la sección de descripción podemos ver una cadena que parece estar cifrada.

Luego de descifrar el mensaje es con base64 y luego HEX, de esta forma obtenemos un mensaje: La fe sin acciones en inservible.

Si usamos el mensaje como contraseña para el PDF protegido podemos ver el contenido y obtener finalmente la flag del reto CTF{5998516ca8709c7bdc0d12fa01af89c6}.

Desarrollador Senior

Puntos: 210

El desarrollador web senior de 58 años, se niega a aprender a usar nuevas herramientas y tecnologías, además de aplicar buenas prácticas en la gestión de contraseñas.
Al final renunció y se fue de viaje, dejó entre sus informes un texto que se suponía era la contraseña de acceso al datacenter, pero no funciona... en la última comunicación con él, lo único que se pudo escuchar fue base ...
Confiamos en tus habilidades para obtener la contraseña real.
REY1cmliRXMzOVZHZU0zUTdVVWhYZUVmTWRlNW44Z0c2WHZGUEY2dVBlZlFxTDlkVWRmeEN3OTZkZGt0eE5LbmVZTDkxSHdkamRWZFZ2

Para el siguiente reto tenemos el siguiente mensaje cifrado:

REY1cmliRXMzOVZHZU0zUTdVVWhYZUVmTWRlNW44Z0c2WHZGUEY2dVBlZlFxTDlkVWRmeEN3OTZkZGt0eE5LbmVZTDkxSHdkamRWZFZ2

Podemos hacer uso de cyberchef para ir probando diferentes tipos de cifrado, según la descripción del reto el último mensaje que se pudo escuchar decía "Base" , entonces podemos probar combinación de estos cifrados y usando Base64 y luego Base58 obtenemos la flag del reto flag{Te pienso más que las páginas indexadas por google.}.

Non nobis domine, non nobis, sed Nomini tuo da Gloriam!

Puntos: 280

Tu compañero de trabajo te envió un archivo protegido con contraseña, pero se le olvidó la clave, sin embargo él sabe que la clave comprende de 7 a 8 dígitos ya que nunca utiliza letras.

Para este reto tenemos un archivo comprimido protegido con contraseña, según la descripción la clave contiene de 7 a 8 dígitos, entonces podemos crearnos un diccionario con la herramienta crunch, especificamos que la clave contenga los números del 0 al 9 y que el tamaño de los números generados sean mínimo de 7 y máximo de 8 dígitos, entonces con el comando crunch 7 8 0123456789 -o numbers.txt y tenemos listo nuestro diccionario.

Lo siguiente es generar un hash a partir del archivo comprimido para poder realizar el ataque de fuerza bruta, podemos hacer eso con zip2john y guardar el hash en un archivo, entonces ejecutamos zip2john ctf.zip > hash, tenemos el hash listo.

Por último podemos usar john para realizar el ataque de fuerza bruta, con el comando sudo john --wordlist=numbers.txt hash.txt.

Genial, ya tenemos la contraseña del zip 5847123,  ya podemos ver la imagen que es la siguiente.

En la imagen observamos símbolos extraños, algo que podemos hacer es buscar algo relacionado al título del reto, al parecer es latín y está relacionado a los caballeros templarios, si buscamos algún alfabeto o cifrado templario encontramos lo siguiente.

Si usamos el alfabeto obtenemos el mensaje vamossigueadekante, aquí tuve el problema de mandar el mensaje como flag final y no ser correcto, por lo que pensé que faltaba algo, intenté traducirlo a latín y perdí tiempo e intentos, al final la solución consistía en adaptar el mensaje a nuestro alfabeto, la flag final es vamossigueadelante.

Un amor entre deshechos químicos

Puntos: 405
Tu crush te envió un correo desde Chernóbil!!!!! Hermosa postal ¿no?

Si analizamos el contenido del pdf primero vemos algunas pistas en el párrafo inicial, se nos habla de elementos químicos, y al parecer el número 119 es muy importante, además en la parte inferior de la imagen tenemos un mensaje cifrado.

Si vemos los números atómicos de los elementos químicos podemos notar que no existe ningún elemento con número atómico 119, por lo cual podemos suponer que serán los espacios en el mensaje cifrado.

22921196344633411992104711956631010553653810

Si cambiamos 119 por espacios tenemos como resultado:

2292 63446334 921047 56631010553653810

Podemos usar una tabla de elementos atómicos para intercambiar los valores que representan los números atómicos con la nomenclatura de los elementos químicos.

Si hacemos el cambio con pesos químicos de dos dígitos tenemos como resultado algo así: TiU EuRuEuSe UNeAg  BaEuNeNeCsKrIONe.

Es un mensaje que no nos dice nada... pero si prestamos atención solamente a las iniciales de los elementos químicos se va formando un mensaje en las primeras dos palabras y tendríamos Tu eres una, el problema es la tercera palabra, pero luego de realizar otros cambios, algunos tomando números atómicos de 3 dígitos finalmente obtenemos el mensaje final TiU EuRuEuSe UNeAg  BaEuNeDbICIONe, y tomando solo las iniciales obtenemos la flag tu eres una bendicion.

Pandas

Puntos: 250

Quería enviar este archivo a mi jefe pero no quería que nadie más viera lo que hay dentro, así que lo protegí con un PIN y para no olvidarme use el mismo número que mi celular.

Para este reto tenemos el archivo pandas.zip, el cual está protegido con contraseña, según la descripción del reto la contraseña es un numero de celular, por lo tanto podemos crear un diccionario de números de celular para realizar fuerza bruta y obtener la contraseña.

Creamos el diccionario especificando que serán combinaciones numéricas de 8 cifras de la siguiente manera: crunch 8 8 0123456789 -o celnum.txt.

Luego podemos usar zip2john para conseguir el hash de las imágenes de la siguiente forma: zip2john pandas.zip > hash.

Y finalmente para conseguir la contraseña ejecutamos john --wordlist=celnum.txt hash.

Continuando con el reto nos encontramos con 2 imágenes, que tienen distinto peso, a simple vista parecen imágenes simulares, así que intenté sobreponer una imagen sobre otra y aplicar algunos filtros pero nada interesante, también revisé metadatos pero tampoco encontré nada, finalmente para conseguir la flag se necesitaba comparar las imágenes con strings de la siguiente manera strings -n 10 panda.jpg panda2.jpg.

De esta manera encontramos la flag del reto Exelente_tr4baj0_p4d4w4n.

Cacheando al mundo

Puntos: 301
Explotación de un servicio de memcached mal configurado. Host: 45.63.83.218

Si leemos la descripción del reto nos dan información muy valiosa y que nos ahorra tiempo, debemos explotar el servicio memcached, primero realizamos la enumeración de puertos para detectar en que puerto está corriendo el servicio, para esto utilizare una herramienta de escaneo rápido de puertos threader3000.

Tenemos un puerto abierto, siguiendo los pasos de explotación manual que encontré en esta página , con memcdump podemos listar los ítems y obtenemos dos ítems, hash y salt, luego con memccat podemos ver el contenido de ambos ítems, obteniendo CIDSI_la_rompe y c86F5096D95DCC01D49BCB6819F5C64B.

Para romper el hash usaremos hashcat de la siguiente forma hashcat -m 10 "C86F5096D95DCC01D49BCB6819F5C64B:CIDSI_la_rompe" -a 0 /usr/share/wordlists/rockyou.txt y obtenemos el mensaje TINKER12 de esta forma completamos el reto.

Developer enojado

Puntos: 450
El flag está escondido en el código fuente de la aplicacion móvil. https://cidsi2021-ctf-web0050.chals.io/

Si ingresamos al link que nos proporciona el reto nos encontramos con un ping checker.

Podemos intentar realizar command injection, para ello podemos probar algunos caracteres que en Linux se usan para concatenar comandos como:

  • |
  • ||
  • &
  • ;

En este caso podemos concatenar comando con el carácter &, así que escribiendo una IP que para la prueba puse 8.8.8.8 y luego añadiendo &ls se obtiene lo siguiente:

Se puede listar los archivos del servidor, de esta forma podemos descargar la aplicación móvil flutter.apk.zip, la cual está protegida con contraseña, si vemos la lista de archivos hay uno llamado Escucha-con-tus-ojos.wav, el nombre del archivo ya nos da una pista de lo que podemos hacer, ver los espectrogramas con la siguiente páginaf y obtener un mensaje que puede ser la contraseña que buscamos.

Usamos la contraseña HAKUNAMATATAS, y tenemos lista la aplicación, intenté instalarla en mi celular pero al parecer estaba dañada.

Para analizar los archivos y el código de la aplicación ejecuto apktool d flutter.apk.

Realizando búsquedas con grep con parámetros como flag o flag{ encuentro varias coincidencias pero que no nos sirven, así que tal ves la flag este en una variable por lo tanto ejecuto grep -r "flag=" --color --text,uso el parámetro --color para que marque en rojo las coincidencias y el parámetro --text para que nos muestre en texto plano las coincidencias que encuentre en los binarios.

De esta forma encontramos la flag del reto B0liv1a_va_al_mund1al_2022.

Con esto termina el Write-Up, en esta ocasión el CTF contó con retos muy interesantes, al final me faltaron resolver varios retos, termine con una puntuación de 2116, a un reto para alcanzar al primer lugar,Israel quedó con 1836 puntos y Gary con 1085 puntos, aquí pueden ver la tabla de puntos finales. Cualquier pregunta o reclamo lo pueden hacer en la sección de comentarios y hasta la próxima.

Regards and Happy Hacking!!!

Etiquetas

¿Te gustó el contenido o lo que hacemos? ¡Cualquier colaboración es agradecida para mantener los servidores o crear proyectos!

Diego Corrales Vega

Hello I am a systems engineering student, and I am interested in ethical hacking & web security testing.

Comentarios:

¡Genial! Te has suscrito con éxito.
¡Genial! Ahora, completa el checkout para tener acceso completo.
¡Bienvenido de nuevo! Has iniciado sesión con éxito.
Éxito! Su cuenta está totalmente activada, ahora tienes acceso a todo el contenido.