Usa el árbol para saltar entre colecciones sin salir del lector.

archivo Seleccionar un writeup Abrir árbol
NullconCTF2026/WriteupRdctd3.md READ_ONLY

Flag 3 (Planned-Flags-signed-2.pdf)

Datos del reto

Campo Valor
CTF Nullcon CTF 2026
Reto Flag 3 (Planned-Flags-signed-2.pdf)
Categoría Forense / Misc
Flag ENO{semantic_3_inference_initialized}

Descripción del reto

El archivo entregado era un PDF con varias flags escondidas y una consigna concreta. Había que enviar la que contuviera un 3. Como el documento parecía redactado, aquí tocaba menos leer el texto visible y más revisar qué información seguía dentro del PDF.


Reconocimiento

Lo primero fue revisar las fuentes más obvias.

  • pdftotext mostraba flags en otras secciones, pero no la que pedía el reto.
  • Los metadatos incluían otra cadena con formato de flag, aunque contenía 7 y 6, no 3.
  • Las anotaciones también revelaban una flag, pero con 2.

Con eso quedaba claro que la respuesta no estaba ni en el texto extraíble ni en los metadatos más evidentes.


Análisis

Cuando un PDF está "redactado", muchas veces el contenido original no desaparece del todo. A veces queda convertido en una imagen, desenfocado o superpuesto de forma que no se pueda copiar, pero sigue siendo recuperable si se extraen los objetos incrustados.

Por eso el siguiente paso fue sacar todas las imágenes del documento.

mutool extract Planned-Flags-signed-2.pdf

Entre los archivos generados aparecía image-0080.png, que correspondía al bloque redactado de la página 2, justo donde se listaban las flags.


Resolución

Al abrir image-0080.png, aunque el texto estaba borroso, la estructura seguía siendo legible. Se alcanzaba a distinguir una lista del tipo

  • "The first flag is ..."
  • "The second flag is ..."
  • "The third flag is ENO{semantic_3_inference_initialized}, ..."

Con eso el reto quedaba resuelto sin demasiada duda. La tercera flag era la única que contenía el carácter 3 dentro de su cuerpo.

En este caso, "redactado" no significaba que el contenido hubiera sido eliminado.


Flag

ENO{semantic_3_inference_initialized}