Skip to main content

MyFirstBlog – Batman's Kitchen CTF

Batman's Kitchen CTF

Datos del reto

Campo Valor
CTF Batman's Kitchen CTF
Reto MyFirstBlog
Categoría Web
Flag bkctf{k3ys_in_th3_l0ck5}

Descripción del reto

El reto es un blog personal en el que, por un comentario HTML dejado en una entrada "borrada" y un path traversal en el endpoint de adjuntos, se puede leer /flag.txt usando una API key expuesta.


Reconocimiento

  • En la página principal hay enlaces a /blog/1, /blog/2 y /blog/4.
  • El CSS usa /attachment?file=kidpix-index.png, lo que indica un endpoint de descarga de archivos controlado por el parámetro file → posible LFI / path traversal.

Endpoint /attachment

  • Probar directamente file=/flag.txt o file=../../../flag.txt devuelve 403 (acceso prohibido).
  • El servidor parece validar rutas y no permite leer archivos arbitrarios sin más.

Blog 3

  • Probar la ruta no enlazada /blog/3 muestra una entrada "[DELETED] Blog 3: Hire Me!!" con un comentario HTML:
    • "for documents in the 'other' folder only people with the API key has access"
  • En la misma página se ve un <object> que carga un PDF con API key en la URL:
    • /attachment?file=resume.pdf&apiKey=906392d25b3bd7d3af491799f89f6620

Análisis de la vulnerabilidad

  • Con la API key, el endpoint permite acceder a la carpeta other (por ejemplo, resume.pdf responde 200).
  • El valor del parámetro file no se restringe correctamente cuando se usa la API key: se puede usar ../ para salir del directorio permitido y leer archivos como /flag.txt.

Explotación

Uso de la API key + path traversal:

  • Con la API key, desde la carpeta other se intenta path traversal para subir al directorio raíz y leer la flag:
    • file=../../../flag.txt&apiKey=906392d25b3bd7d3af491799f89f6620
  • La respuesta del servidor es el contenido de /flag.txt: bkctf{k3ys_in_th3_l0ck5}.

Comando para reproducir

curl -s "http://34.186.135.240:30000/attachment?file=../../../flag.txt&apiKey=906392d25b3bd7d3af491799f89f6620"

Salida: bkctf{k3ys_in_th3_l0ck5}


Flag

bkctf{k3ys_in_th3_l0ck5}

Lecciones aprendidas

  • Exposición de información sensible: API key en comentario HTML y en la URL del <object> (no debes "post certain info on the interwebs").
  • Path traversal: Con la API key no se restringe correctamente el valor de file, permitiendo ../ y salir del directorio permitido hasta llegar a /flag.txt.