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 PDF fue publicado por la ley alemana de libertad de información (Informationsfreiheitsgesetz), con información "redactada". Hay 6 flags ocultas en el mismo archivo. Objetivo de este reto: entregar la flag que contiene un "3" (Submit here the flag containing a 3).
Reconocimiento
Herramientas usadas: mutool (MuPDF), pdftotext, strings/grep, qpdf (opcional).
- Con
pdftotext Planned-Flags-signed-2.pdf -se ve que en la sección 3.4 aparecen flags en claro (contienen "1", no "3"). En 3.3 (Applied Cryptanalytic Methodologies and Information Obfuscation Studies) el texto está redactado: solo llaves{ }y el resto tapado. La flag con "3" no está en el texto extraíble. - Metadatos (exiftool): Producer contiene
ENO{secureflaghidingsystem76}— contiene 7 y 6, no 3. - Anotaciones (qpdf --qdf + grep): URIs con
ENO{input_sanitization_2_is_overrated}— contiene 2, no 3.
Ninguna es la flag que pide el reto.
Análisis de la vulnerabilidad
En PDFs "redactados", el contenido a veces se reemplaza por una imagen (p. ej. borrosa) que sigue siendo analizable. Conviene extraer todas las imágenes:
mutool extract Planned-Flags-signed-2.pdf
Se obtienen, entre otras, image-0080.png (objeto 80) e image-0117.png. La primera corresponde al bloque de texto redactado de la página 2 (sección 3.3), donde se listan las seis flags.
Explotación
En image-0080.png el texto está intencionadamente borroso pero se distingue la estructura:
- "The first flag is ...", "The second flag is ..."
- "The third flag is ENO{semantic_3_inference_initialized}, ..."
- y el resto (fourth, fifth, sixth).
La tercera flag es la que contiene el carácter "3" en su cuerpo: semantic_3_inference_initialized.
Flag
ENO{semantic_3_inference_initialized}
Lecciones aprendidas
| Origen | Contenido | Motivo de descarte |
|---|---|---|
| Producer (metadatos) | ENO{secureflaghidingsystem76} | Contiene 7 y 6, no 3 |
| URIs (anotaciones) | ENO{input_sanitization_2_is_overrated} | Contiene 2, no 3 |
| Sección 3.4 (texto) | ENO{stability gradient 1 disrupted} | Contiene 1; patrón distinto |
En PDFs redactados, el contenido no siempre se elimina: a veces se reemplaza por una imagen que sigue siendo analizable. Extraer y revisar todas las imágenes del PDF (mutool extract) es un paso estándar en análisis forense de documentos.