Skip to content

SQLi

Metes SQL donde la app esperaba un valor. Solo en labs / bug bounty con scope.

SELECT * FROM users WHERE user = '$input' AND pass = '...'

Si $input es ' OR '1'='1, la condición se vuelve siempre verdadera (según query).

  • Login, búsqueda, filtros, id= en URL
  • A veces headers / cookies
  1. Encuentra un param que hable con DB.
  2. Prueba comilla: ' → ¿error SQL / 500?
  3. Lógica: ' OR '1'='1 / " OR "1"="1
  4. Comenta resto: ' OR 1=1-- (sintaxis según motor)
GET /item?id=1' HTTP/1.1

Si hay error de MySQL/Postgres/MSSQL, hay pista del motor.

TipoIdea
In-bandResultado en la misma respuesta (UNION, error)
BlindSí/no por tiempo o contenido
Out-of-bandCanal aparte (DNS/HTTP) — menos frecuente en CTF

Prepared statements / queries parametrizadas. Escapar a mano suele fallar.

Herramienta: Burp. Ref: PortSwigger SQLi.