Fin de semana jugando CyberSpace CTF 2024

1v0t
6 min readSep 2, 2024

--

Antes de iniciar el blog , es importante recordar el equilibrio de los CTF y descanso para evitar el burnout, buscando este equilibrio, finalmente pudimos jugar este CTF con mi equipo https://x.com/bugs_b0unt3r hasta el domingo 1 de septiembre, quizá esto influyo en no resolver la mayoría, aun así, el tiempo jugado aunque poco , nos permitió aprender mucho en el proceso , compartimos algunos que nos parecieron de los mas divertidos

— -

Write-ups:

Baby Pybash — CTF Jail

Descripción del Reto

Nombre: Baby Pybash
Descripción:
“I made a very secure bash terminal in Python. I don’t think anyone can break in!”

Se nos proporciona un servicio que corre un bash simulado implementado en Python. El objetivo es encontrar una manera de escapar de este entorno restringido para obtener la flag.

Archivos entregados para analisis

  1. chall.py: El código Python que maneja la lógica del bash simulado.
  2. Dockerfile: Detalles sobre el entorno Docker donde corre el reto.
  3. flag.txt: Contiene una flag de prueba para el entorno local.
  4. nsjail.cfg: Archivo de configuración de nsjail, que probablemente añade restricciones adicionales al entorno.
  5. run.sh: Script bash que ejecuta chall.py en el entorno restringido.

Análisis del Reto

Al revisar el código en chall.py, observamos lo siguiente:

  1. Restricción de Entrada:
    El código filtra cualquier comando que contenga letras, símbolos especiales comunes y caracteres no ASCII, utilizando la función restrict_input. Esto parece bloquear la mayoría de las entradas tradicionales de bash, limitando severamente lo que se puede ejecutar.
  2. Ejecución de Comandos:
    Si la entrada pasa el filtro, se ejecuta mediante subprocess.run(), lo que sugiere que cualquier comando que no sea filtrado podría ser ejecutado en un entorno shell real.

Proceso de Solución

Utilizamos nc para conectarnos al servicio:

  • nc baby-pybash.challs.csc.tf 1337

Exploración Inicial: Se intentaron comandos básicos como ls, echo 123, y combinaciones de caracteres especiales, pero todos fueron bloqueados por el filtro.

Descubrimiento del Escape: Finalmente, se descubrió que el comando $0, que en bash se refiere al nombre del script o shell que se está ejecutando, no fue filtrado y permitió ejecutar comandos en el shell verdadero.

  • $0

Tras ejecutar $0, pudimos utilizar comandos como ls y cat para explorar el entorno y leer la flag:

Esto resultó en la obtención de la flag:

  • CSCTF{b4sH_w1z4rd_0r_ju$t_ch33s3_m4st3r?_c1d4eeb

Geometry Dash 2.1

I would give you the flag but I can’t let go (haha get it). use GDBrowser for the last step btw. Note: You do NOT need Geometry Dash purchased to solve this challenge.

El reto consiste en obtener la flag escondida en un archivo de Geometry Dash. No es necesario tener comprado el juego para resolverlo, pero se requiere cierta manipulación de los archivos de juego y el uso de herramientas externas.

Como lo solucionamos:

  1. Extracción de información del archivo .dat:
  • Primero, se obtuvo el archivo .dat asociado al reto. Este archivo contiene información cifrada o codificada que necesitamos descifrar para encontrar la flag.

Análisis del archivo .dat:

  • Se utilizó GDBrowser para cargar el archivo .dat y obtener detalles relevantes. Esta herramienta es útil para analizar datos del juego Geometry Dash sin necesidad de tener el juego instalado.

Conversión del archivo .dat a texto:

  • También se subió el archivo .dat en gdcolon.com/gdsave, lo que permitió convertir el archivo a un formato de texto legible. Al abrir este archivo en un editor de texto, se encontró un fragmento importante de la flag.

Identificación del usuario y obtención del ID:

  • En el texto extraído se encontró un pedazo de la flag que contenía una cadena de caracteres perhapstry95484635. Esta cadena 95484635 parecía ser el ID de un usuario en Geometry Dash.

Búsqueda del ID y recuperación de la flag completa:

  • Usando el ID 95484635, se buscó al usuario correspondiente en Geometry Dash. La búsqueda reveló comentarios del usuario que contenían la flag completa: CSCTF{geometry_dash_d0895c120d671b}.

bad packets

Our SOC says that there seems to be some curious activities within one of our servers. They provided a pcap file but I can’t find what they’re talking about.

Descripción del reto

El reto consistía en analizar un paquete que contenía información que había sido configurada incorrectamente. Para resolver el reto, era necesario identificar y extraer la flag que se encontraba escondida en una de las cadenas de texto del archivo.

Pasos para la solución:

Investigación de Writeups Anteriores:

  • Comencé siguiendo los writeups de otros retos similares, como este de miast.io y este de Abdelrahme. Ambos proporcionaban un enfoque sobre cómo tratar con variables mal configuradas en un entorno de despliegue.

Ejecución del Código:

  • Utilicé un script proporcionado en uno de los writeups para identificar las variables en el paquete. Este código ayudó a localizar y listar las cadenas de texto del archivo, en especial las que podrían estar relacionadas con la flag.

Identificación de la Flag:

  • Tras analizar las cadenas extraídas del archivo oldcss, identifiqué la que contenía la flag.

Flag

  • Finalmente, la flag encontrada fue: CSCTF{chang3_y0ur_variab13s_b3for3_d3pl0ying}.

Memory

I left the image of the flag in the desktop but somehow it disappeared, can you help me recover it?”

Solución:

Extracción de variables de entorno:
Utilizando el comando python3 vol.py -f /home/rutamia/CTF/mem.dmp windows.envars, se extrajeron las variables de entorno de los procesos que estaban en la memoria del sistema operativo Windows. Aquí se observaron varios procesos con cadenas en lo que parecía ser Base64, además de información sobre AES, hex, y renderización de imágenes.

Desencriptación y renderización de la imagen:
Luego, con CyberChef se procedió a decodificar estas cadenas de Base64, desencriptarlas usando AES y convertir el resultado de hexadecimal a una imagen. Este proceso permitió recuperar la imagen que contenía la flag:
Flag: csctf{p0w3r$h3ll_$0v3d_3v3ry7h1ng_1n_3nv@r$!_Congr@tul@t10n$!}

Estos fueron todos los que logramos resolver por tiempo aun asi consideramos que cada reto presentaba un conjunto único de problemas, desde el análisis forense de memoria hasta la extracción de información oculta en archivos de juegos y CSS antiguos. Estos desafíos no solo requirieron una comprensión sólida de herramientas y técnicas específicas, como Volatility y CyberChef, sino que también pusieron a prueba la capacidad de pensar críticamente y aplicar soluciones creativas.

Uno de los aspectos más destacados fue la oportunidad de aprender a usar herramientas especializadas en entornos específicos. Por ejemplo, el reto de memoria demostró la importancia de las variables de entorno y cómo se pueden utilizar para descubrir información valiosa, mientras que los retos relacionados con Geometry Dash y CSS subrayaron la relevancia de la extracción y manipulación de datos en diferentes formatos.

Además, resolver estos retos proporcionó un entendimiento más profundo sobre la seguridad de la información, mostrando la importancia de proteger adecuadamente los datos antes de desplegar aplicaciones, como se evidenció en el reto de “Badpackets”.

Estos retos que si bien no resolvimos todos consideramos fueron un excelente ejercicio para mejorar las habilidades en análisis forense, criptografía, y reversing de los bugs bounters.

--

--

1v0t

OSINT, threat hunting, CTF, forensic analysis, hunting down bad guys to complete the puzzle.