En este reto de PicoCTF, nos conectamos a una base de datos PostgreSQL para encontrar la flag oculta en su contenido.
Al iniciar la instancia del reto, se nos proporciona un conjunto de credenciales y un comando para conectarnos a la base de datos. Generalmente, la conexión se realiza con:
psql -h <host> -U <usuario> -d <nombre_de_bbdd>Tras ingresar las credenciales, accederemos a la consola interactiva de PostgreSQL.
Una vez dentro, debemos recordar que estamos en un entorno de consultas SQL, por lo que debemos utilizar comandos específicos de PostgreSQL para interactuar con la base de datos.
Si no conocemos los comandos, un poco de investigación en la documentación oficial o con ayuda de IA nos permitirá encontrar los más útiles.
Para ver qué tablas existen en la base de datos, utilizamos:
\dt;Nota: En PostgreSQL, los comandos que comienzan con
\son comandos internos depsql, no comandos SQL estándar. Además, en SQL, las sentencias deben terminar con;.
Tras ejecutar este comando, obtenemos la lista de tablas disponibles. En este caso, vemos que hay una tabla llamada "flags".
Si tenemos conocimientos previos de bases de datos, sabremos que para ver el contenido de una tabla se utiliza la consulta SELECT. La sintaxis básica es:
SELECT * FROM flags;Esto nos mostrará todas las filas y columnas de la tabla flags. En el resultado, encontraremos la flag del desafío.
-
Si no tienes experiencia con PostgreSQL, puedes listar más información sobre la estructura de la base de datos con:
\d flags;
Esto mostrará los detalles de la tabla, incluyendo sus columnas y tipos de datos.
-
Para mejorar la lectura del resultado, puedes usar
\xpara activar el modo expandido enpsql:\x SELECT * FROM flags;
Esto hará que la salida sea más fácil de leer si la tabla tiene muchas columnas.
Este reto nos enseña los fundamentos de la exploración de bases de datos en entornos de seguridad informática. Aprender a interactuar con PostgreSQL y comprender cómo consultar información es clave en muchos desafíos de CTF.