martes, 9 de marzo de 2010

SQLMap: Inyección SQL Automática

SQLMap es una herramienta para llevar a cabo inyecciones SQL realizada por Bernardo Damele (líder de proyecto) y Miroslav Stampar (Desarrollador). Es una herramienta desarrollada en Python y por tanto independiente del sistema operativo.

Una vez hecha la pequeña presentación de la herramienta, vamos a juguetear un poco con ella. Para las pruebas realizadas hemos utilizado:

  • DVWA versión 1.0.6 como aplicación vulnerable a SQL injection
  • SQLMap 0.7 como herramienta para realizar SQL injection
  • Mysql 5.0.51
  • Sistema Operativo, Debian
Accedemos a la aplicación DVWA con nuestras credenciales, accedemos desde el menú de la izquierda a la opción "SQL Injection":






La aplicación recibe un identificador numérico y devuelve qué usuario dispone de ese identificador. Por ejemplo, si introducimos un '1' como "user id" la aplicación nos devolverá 'admin'. La aplicación realiza la siguiente consulta SQL sobre la base de datos, "SELECT first_name, last_name FROM users WHERE user_id = '$id'", recibiendo como parámetro el user_id. En el caso de no realizar un buen tratamiento del identificador un atacante podrá realizar una inyección SQL.

Vamos a probar qué sucede si introducimos una comilla seguida de un identificador numérico:



Como vemos se produce un error que nos indica que estamos ante una "posible" inyección SQL. En este caso concreto sabemos a ciencia cierta que existe, así que ahora vamos a ver cómo se comporta SQLMap, para ello lanzamos SQLMap pasándole la URL y los identificadores de sesión:

$> sqlmap.exe --url="http://192.168.72.133/webapp/dvwa/vulnerabilities/sqli/index.php?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=5c8195bf7834edb2e4ab7b6eae6af45f"

Resultado obtenido:



Nosotros sabemos que el parámetro id es vulnerable a SQL injection y que la base de datos es Mysql, pero en este caso SQLMap parece no darnos el resultado esperado, ¿por qué?. SQLMap compara la página sin ningún tipo inyección con la página con la inyección y en función de la variación entre ellas devuelve True o False (True si supera determinado ratio y False en el caso contrario). En nuestro caso si la inyección deriva en una página de error (por lo que no está bien construida) esta varía mucho de la página sin ningún tipo de inyección; por el contrario si la inyección resulta exitosa devolverá en el campo ID nuestra inyección, dejando igual los campos "First name" y "Surname". En la ejecución anterior SQLMap no funciona de manera correcta porque el campo ID con nuestra inyección hace variar demasiado la página. Si vamos haciendo una traza de la ejecución observamos que es en el fichero "comparison.py" donde devuelve "False" en base a dos valores, ratio y conf.matchRatio.



Añadimos dos líneas a este fichero, 'logger.info(ratio) y logger.info(conf.matchRatio)', para observar qué valores tienen las variables ratio y conf.matchRatio cuando realiza una inyección que efectivamente debería surtir efecto:



Como vemos la página con la inyección varía "demasiado" para ser detectado por nuestra sensible herramienta. Para ayudarla un poco vamos a utilizar el parámetro "--string", con el objetivo de introducir una cadena que esté siempre en la página sin inyección y en la página con una inyección que debiera volver True. Por contra esta cadena no debería estar cuando devuelva False. En este caso si introducimos como "id=1", sabemos que debe devolver admin cuando se produzca un True y no debe aparecer cuando devuelva False. Vamos a probar:

$> python -d /usr/bin/sqlmap --url="http://192.168.72.133/webapp/dvwa/vulnerabilities/sqli/index.php?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=5c8195bf7834edb2e4ab7b6eae6af45f" --string="admin"

Resultado obtenido:



Ahora que parece funcionar, vamos a obtener por ejemplo las bases de datos que posee la base de datos:

$> python -d /usr/bin/sqlmap --url="http://192.168.72.133/webapp/dvwa/vulnerabilities/sqli/index.php?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=5c8195bf7834edb2e4ab7b6eae6af45f" --string="admin" --dbs



Vemos que existen cuatro base de datos (dvwa, information_schema, mysql y wordpress281) en la base de datos. Llegados a este punto empieza la fiesta y ya podemos ir consultando con la herramienta diferentes aspectos de la base de datos, y que podéis consultar en el manual de SQLMap.

En una próxima entrada llegaremos un poco más lejos ..... a través de una inyección SQL. Espero que esta entrada os sirva para ver cómo toquetear SQLMap un poquito y empezar con lo divertido.

32 comentarios :

Adrián dijo...

Buenas,

SQLMap es mi herramienta preferida para sacar partido a las inyecciones SQL que ya he comprobado que existen. Sin embargo, encuentro muchos problemas cuando lo que trato de verificar es un panel de login/passwd con POST en vez de GET. Igual con un string adecuado me funciona bien. Volveré a hacer pruebas, anyway :)

Jose Selvi dijo...

@Adrián, intentalo con un String que veas que identifique el cambio entre true o false, a ver que tal.

De todas maneras, a mi hay muchas veces que SQLMap me detecta una Inyección Ciega que en realidad no es tan ciega... Tenlo en cuenta cuando lo uses.

Saludos y gracias por el comentario!

José Miguel Holguín dijo...

Espero que te sirva la opción string porque es más que útil :D.

En una próxima entrada seguiremos profundizando en este tema y con esta tool. Si te quedas atascado o tienes un problema concreto con alguna prueba no dudes en ponerlo por aquí y si lo sabemos te ayudaremos ;).

Gracias por el comentario Adrián.

Joseph dijo...

A mi me sale, ante cualquier prueba que hago:

[14:48:49] [INFO] testing if User-Agent parameter 'User-Agent' is dynamic
[14:48:57] [WARNING] User-Agent parameter 'User-Agent' is not dynamic

[*] shutting down at: 14:48:57


donde se cambia eso?

gracias

Jose Selvi dijo...

@Joseph: Te sale SOLO eso? o entre las otras pruebas que hace te sale eso?

Que te salga es normal, entre las variables que chequea, además de chequear variables GET y POST, comprueba si la web cambia cuando se cambian algunos parámetros del navegador, como por ejemplo el User-Agent. Podría pasar que una web utilizara el User-Agent para construir una SQL, y que modificando este parámetro pudiéramos realizar una Inyección SQL, aunque no esté ni en el GET ni en el POST.

Lo que te dicen esos mensajes es que se comprueba que cambiando el User-Agent la web resultante no cambia, por lo que no se testean inyecciones contra ella (no se está utilizando para hacer queries, o eso parece).

No te preocupes por esas lineas, solo es un chequeo que hace, te debería funcionar todo perfectamente.

Saludos y gracias por tu comentario ;)

joseph dijo...

Ok, gracias por la inmediata respuesta.
El tema es que quiero hacer operaciones basicas para arrancar (nada complicado) y al salir eso que parece ser un warning normal, se corta ahi el test (mensaje de shutting down).
por ejemplo, yo ejecuto:

./sqlmap.py -u www.target.com/_layouts/1033/non_ie.js?rev=yfNry4hY0Gwa/PDNGrqXVg== -b

y la salida es:

[*] starting at: 15:01:53

[15:01:53] [INFO] using '/home/xxx/Tools/sqlmap/output/www.target.com/session' as session file
[15:01:53] [INFO] testing connection to the target url
[15:01:55] [INFO] testing if the url is stable, wait a few seconds
[15:02:01] [INFO] url is stable
[15:02:01] [INFO] testing if User-Agent parameter 'User-Agent' is dynamic
[15:02:10] [WARNING] User-Agent parameter 'User-Agent' is not dynamic

[*] shutting down at: 15:02:10


y hasta ahi llego. Estoy seguro que es una pavada, pero no le encuentro logica.
Probe tambien poniendo el parametro --user-agent, por ejemplo:

--user-agent "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"

pero nada, igual.
Es muy raro y creo que ya me habia ocurrido lo mismo con la version anterior. Tal vez no estoy entendiendo bien como funciona esto o estoy poniendo mal la url (salvo donde dice target, lo demas es real).

gracias de antemano amigo. muy bueno el blog, lo sigo siempre.

saludos

José Miguel Holguín dijo...

Buenas @Joseph

Como bien comenta Jose puedes si no le indicas el parámetro de manera explícita analiza diferentes parámetros. Si quieres indicarle un parámetro concreto mira si te sirve la opción "-p" de la herramienta.

Todo esto partiendo de que la salida sea algo más que lo que nos dices.

Un saludo.

José Miguel Holguín dijo...

@Joseph

Fíjate en el ejemplo del post que al ser una entorno autenticado es necesario proporcinarle a sqlmap los identificadores de sesión.

¿Lo estás lanzándolo sobre un entorno autenticado? Si es así mira de pasarle los identificadores de sesión (en el post son cookie's).

Espero que te sirva.

Un saludo.

Anónimo dijo...

Antes de nada felicitarte por el post. Por lo general yo siempre hacía estas pruebas a manita y no me había parado a mirar esta clase de herramientas... hasta ahora.

Va de maravilla, pero he encontrado un sitio (mio) donde me salta un error y no consigo saber por qué es:

Si pido la página con GET o HEAD (desde consola) me da un 200 sin problemas (no necesita autenticación, ni espera una sesión, etc). Si pongo la página para el sqlmap me salta este error:

$ ./sqlmap.py -u "http://xxxx.xxx/xxx?par1=value1"

[18:19:27] [INFO] testing connection to the target url
[18:19:28] [WARNING] unable to connect to the target url or proxy, sqlmap is going to retry the request
[18:19:29] [WARNING] unable to connect to the target url or proxy, sqlmap is going to retry the request
[18:19:30] [WARNING] unable to connect to the target url or proxy, sqlmap is going to retry the request
[18:19:31] [ERROR] unable to connect to the target url or proxy

[*] shutting down at: 18:19:31

¿tiene alguien idea de porqué pasa esto? He estado googleando durante el día a ver si encontraba alguna respuesta pero no doy con la solución.

Gracias!

Jose Selvi dijo...

@Anónimo: Yo cuando tengo problemas de esos me pongo a capturar con tcpdump para ver que puñetas está pasando a bajo nivel :P

# tcpdump -l -i eth0 -nn -A -s 0 host ??? and port 80

(suponiendo que eth0 es tu interface de red)

Con esto podemos intentar ver si es que falla el DNS, la conexión, o si la respuesta es correcta pero la herramienta está funcionando mal.

Si la respuesta es muy grande como para ponerla en un comentario puedes "truncar" la salida ASCII, con ver que nos está devolviendo HTML o no y ver más o menos si se corresponde a la página creo que podemos sacar algunas conclusiones.

Esperamos tu respuesta.
Saludos.

Anónimo dijo...

Muy buen post. Os animo a seguir.

Una interesante herramienta a tener en cuenta:

http://www.learnphp.co.il/yoni/yoni_project_linux.rar

Podeis verla aqui:

http://www.youtube.com/watch?v=Xwx5xWnxnNE

No amiguetes, no es mia.

A mas ver,

Keyser Soze

José Miguel Holguín dijo...

@Anónimo


Además de lo que comenta Jose, mi consejo sería que probaras la opción -v de sqlmap (copia del manual de sqlmap):

"There exist six levels. The default level is 1 in which information, warnings, errors and tracebacks (if any occur) will be shown. Level 2 shows also debug messages, level 3 shows also full HTTP requests, level 4 shows also HTTP responses headers and level 5 shows also HTTP responses page content."

Te aconsejo que vayas subiendo poco a poco de nivel de detalle y vayas viendo las peticiones HTTP y respuestas.

Espero que te ayude.

Un saludo.

Anónimo dijo...

Tras cargar dvwa 1.0.6 en /var/www/ en bt4f y modificar .htaccess segun las instrucciones para PHP 5.2.6, cuando lanzo SQL Injection me dice "Magic Quotes are on, you will not be able to inject SQL."
He comprobado que las comillas estan a off tanto en .htaccess como en php.ini pero no hay manera, dvwa sigue reportandolas a On.

¿Os ha pasado a vosotros)

José Miguel Holguín dijo...

Buenas @Anónimo

Para las pruebas únicamente me tocó poner en Off las opciones magic_quotes del php.ini. Después un reboot del servidor web (apache2) y a funcionar.

Yo probaría lo primero que el php.ini que estés modificando se corresponda al que el servidor web está utilizando.

Si no van por ahí los tiros ya nos comentas.

Un saludo!

Servidores dijo...

Excelente blog y muy buen post, realmente llegué a tú blog por coincidencia, pero he leído un par de artículos y me han parecido muy interesantes, espero sigas así.

Un saludo.

Jose dijo...

ya esta publicada la segunda parte?

José Miguel Holguín dijo...

@Jose, por el momento no estamos trabajando ninguno de los dos en la segunda entrada de sqlmap, pero descuida que va a llegar :), espero que llegue pronto.

Un saludo y gracias

Delorean dijo...

Hola!!

Una duda existencia..

Con sqlmap haciendo pruebas consigo ver que BD es y confirmar que se puede inyectar , pero para intentar ver las tablas, el usuario de la BD o cualquier cosa es imposible, solo se puede ver que BD es y confirmar que es inyectable...Puede ser que realmente no sea inyectable ? Pongo el ejemplo:

./sqlmap.py --url="http://www.prueba.com/index.php?id=13&it=90" -D mysql --tables

sqlmap/0.9-dev - automatic SQL injection and database takeover tool
http://sqlmap.sourceforge.net

* starting at: 13:08:45
[13:08:45]

[INFO] using '/pentest/database/sqlmap/output/www.prueba.com/session' as session file
[13:08:45] [INFO] resuming injection point 'GET' from session file
[13:08:45] [INFO] resuming injection parameter 'it' from session file
[13:08:45] [INFO] resuming injection type 'numeric' from session file
[13:08:45] [INFO] resuming match ratio '0.844' from session file
[13:08:45] [INFO] resuming 0 number of parenthesis from session file
[13:08:45] [INFO] resuming back-end DBMS 'mysql 5' from session file
[13:08:45] [INFO] testing connection to the target url
[13:08:49] [INFO] testing for parenthesis on injectable parameter
[13:08:49] [INFO] the back-end DBMS is MySQL
web server operating system: Windows 2000
web application technology: PHP 5.2.6, Microsoft IIS 5.0
back-end DBMS: MySQL 5
[13:08:49] [INFO] fetching tables for database 'mysql'
[13:08:49] [INFO] fetching number of tables for database 'mysql'
[13:08:49] [INFO] read from file '/pentest/database/sqlmap/output/www.prueba.com/session':
[13:08:49] [INFO] read from file '/pentest/database/sqlmap/output/www.prueba.com/session':
[13:08:49] [INFO] retrieved:
[13:08:55] [WARNING] unable to retrieve the number of tables for database 'mysql'
[13:08:55] [CRITICAL] unable to retrieve the tables for any database

* shutting down at: 13:08:55

He intentado ver a bajo nivel con tcpdump y con -v 5,6 del sqlmap pero no se ve nada que aclare que pasa..No se si es un falso positivo o que, la cosa es que vía browser si pones el tipico "'" te muestra el error de mysql en pantalla , pero de ahi no he conseguido averiguar mas.

Delorean dijo...

Hola,

Habia puesto un comentario no se si lo habeis eliminado o ha pasado algo..

Con sqlmap haciendo pruebas consigo ver que BD es y confirmar que se puede inyectar tráfico, pero para intentar ver las tablas, el usuario de la BD o cualquier cosa es imposible, solo se puede ver que BD es y confirmar que es inyectable...Puede ser que realmente no sea inyectable ? Pongo el ejemplo:

./sqlmap.py --url="http://www.prueba.com/index.php?id=13&it=90" -D mysql --tables

sqlmap/0.9-dev - automatic SQL injection and database takeover tool
http://sqlmap.sourceforge.net

* starting at: 13:08:45
[13:08:45]

[INFO] using '/pentest/database/sqlmap/output/www.prueba.com/session' as session file
[13:08:45] [INFO] resuming injection point 'GET' from session file
[13:08:45] [INFO] resuming injection parameter 'it' from session file
[13:08:45] [INFO] resuming injection type 'numeric' from session file
[13:08:45] [INFO] resuming match ratio '0.844' from session file
[13:08:45] [INFO] resuming 0 number of parenthesis from session file
[13:08:45] [INFO] resuming back-end DBMS 'mysql 5' from session file
[13:08:45] [INFO] testing connection to the target url
[13:08:49] [INFO] testing for parenthesis on injectable parameter
[13:08:49] [INFO] the back-end DBMS is MySQL
web server operating system: Windows 2000
web application technology: PHP 5.2.6, Microsoft IIS 5.0
back-end DBMS: MySQL 5
[13:08:49] [INFO] fetching tables for database 'mysql'
[13:08:49] [INFO] fetching number of tables for database 'mysql'
[13:08:49] [INFO] read from file '/pentest/database/sqlmap/output/www.prueba.com/session':
[13:08:49] [INFO] read from file '/pentest/database/sqlmap/output/www.prueba.com/session':
[13:08:49] [INFO] retrieved:
[13:08:55] [WARNING] unable to retrieve the number of tables for database 'mysql'
[13:08:55] [CRITICAL] unable to retrieve the tables for any database

* shutting down at: 13:08:55


He observado a bajo nivel tanto con tcpdump como con -v 5,6 del sqlmap pero no se ve nada claro..Puede ser que sea un falso postivo el que lo detecte como inyectable ?

En el browser, si pones el tipico "'" en el parametro te devuelve el error en pantalla de mysql, pero no he conseguido obtener mas datos.

Jose Selvi dijo...

@delorean: Me temo que la opción -D de SQLMap no es para forzarle el tipo de base de datos, sino el NOMBRE de la base de datos de la que quieres sacar la información. En este caso, como no existe una base de datos llamada "mysql"... pues SQLMap no te está pudiendo obtener el número de tablas, claro.

Quitale el "-D mysql --tables" y usa primero la opción "--dbs" para que te liste las bases de datos, y entonces elije una y ya puedes usar la opción -D

Suerte!

Jose Selvi dijo...

@Delorean: No sé que ha pasado con tu primer comentario. Me ha llegado la notificación por correo pero no lo he visto en la web :S

Cosas de Blogger...

Saludos!

Delorean dijo...

Otra vez me ha borrado blogger mi comentario , debe ser que hay algo que no le gusta :)

Con --dbs ya había probado al igual que con --dump-all y el comportamiento es el mismo, no entiendo que es lo que pasa :(

./sqlmap.py --url="http://www.prueba.com/index.php?id=13&it=90" --dbs

sqlmap/0.9-dev - automatic SQL injection and database takeover tool
http://sqlmap.sourceforge.net

[*] starting at: 10:54:32

[10:54:32] [INFO] using '/pentest/database/sqlmap/output/www.prueba.com/session' as session file
[10:54:32] [INFO] resuming injection point 'GET' from session file
[10:54:32] [INFO] resuming injection parameter 'it' from session file
[10:54:32] [INFO] resuming injection type 'numeric' from session file
[10:54:32] [INFO] resuming match ratio '0.844' from session file
[10:54:32] [INFO] resuming 0 number of parenthesis from session file
[10:54:32] [INFO] resuming back-end DBMS 'mysql 5' from session file
[10:54:32] [INFO] testing connection to the target url
[10:54:44] [INFO] testing for parenthesis on injectable parameter
[10:54:44] [INFO] the back-end DBMS is MySQL
web server operating system: Windows 2000
web application technology: PHP 5.2.6, Microsoft IIS 5.0
back-end DBMS: MySQL 5
[10:54:44] [INFO] fetching database names
[10:54:44] [INFO] fetching number of databases
[10:54:44] [INFO] read from file '/pentest/database/sqlmap/output/www.prueba.com/session':
[10:54:44] [INFO] read from file '/pentest/database/sqlmap/output/www.prueba.com/session':
[10:54:44] [INFO] retrieved:
[10:54:56] [CRITICAL] unable to retrieve the number of databases

[*] shutting down at: 10:54:56

Gracias por las respuestas.

Delorean dijo...

Otro ejemplo con --current-db o --current-user

[11:00:29] [INFO] the back-end DBMS is MySQL
web server operating system: Windows 2000
web application technology: PHP 5.2.6, Microsoft IIS 5.0
back-end DBMS: MySQL 5
[11:00:29] [INFO] fetching current user
[11:00:29] [INFO] retrieved:
current user: None



[10:59:26] [INFO] fetching current database
[10:59:26] [INFO] retrieved:
current database: None

Jose Selvi dijo...

@Delorean: Puede que te estén filtrando algunos caracteres de entrada y eso haga que las SQL que utiliza SQLMap no funcionen. A mi me ha pasado más de una vez y me ha tocado hacerme algún script aparte.

Intenta explotar a mano la vulnerabilidad, aunque solo sea para obtener algún carácter, o el número de tablas, así verás de primera mano si funciona o no. Puedes inspirarte sobre las SQLs a utilizar en el fichero queries.xml de SQLMap o directamente mirar en Google.

Delorean dijo...

Buenas Jose,

He ido investigando un poco..estoy haciendo pruebas manuales y si pongo


http://www.prueba.com/index.php?id=13&it=65 or '1'='1'

Si funciona, me muestra un contenido distinto al it=65 y si pongo '1' = '2' me muestra el contenido del it=65

Pero si pongo(como se supone que deberia ser):

http://www.prueba.com/index.php?id=13&it=65' or '1'='1


si pongo esto me da el error:

MySQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' or '1'='1' at line 1


Es decir.. que tengo que poner las '' dobles para que funcione..

Otro ejemplo..

http://www.prueba.com/index.php?id=13&it='' UNION SELECT 1,2 FROM tabla WHERE id=''

Me muestra lo que deberia:

MySQL Error: The used SELECT statements have a different number of columns

pero si no pongo las '' dobles me vuelve a dar error de syntaxys del mysql.. es como si le tuviera q poner en el browser las querys tal cual van en el codigo?¿?

Bueno.. esto de aprender sobre sqli me voy a tener que dar cabezazos contra la pared :D:D

Jose Selvi dijo...

@Delorean: Por lo que comentas, me temo que hay conceptos sobre SQL Injection que no tienes muy claros.

Concretamente, es perfectamente posible hacer una Inyección SQL sobre un entero, y en esos casos NO se deben usar comillas simples ni dobles (me parece que estamos en ese caso) o de lo contrario no funcionará (todo dependerá de que en la SQL el desarrollador haya puesto o no comillas en el entero). Por otro lado, cuando se hace un UNION SELECT es normal que te pida que tengan el mismo número de columnas, así que generalmente lo que se hace es in probando a añadir una a una hasta que ese error desaparece.

Siempre es conveniente aprender a usar las técnicas manualmente antes de intentar utilizarlas a través de una herramienta, porque así sabemos exactamente que es lo que tiene que hacer la herramienta y somos capaces de depurar cuando tiene funcionamientos no esperados.

Te dejo un par de enlaces con información, aunque te recomiendo que leas largo y tendido, y sin prisas, no que te vayas directamente a la cheat sheet:
http://www.owasp.org/index.php/Testing_for_SQL_Injection_(OWASP-DV-005)
http://ferruh.mavituna.com/sql-injection-cheatsheet-oku/

el_aprendiz_rom dijo...

Hola soy nuevo en esto, me gustaria aprender a trabajar con sqlmap, tengo una pregunta para hacer las pruebas con esta herramienta tengo que asegurarme primero que la aplicacion es vulnerable a inyecciones sql???

Jose Selvi dijo...

@el_aprendiz_rom: Si estás empezando con esto te recomiendo que intentes hacer las cosas a mano para empezar. Así es como aprenderás como funciona todo.

SQLMap es una herramienta fantástica, pero no es la panacea, hay cosas que no detecta o situaciones en las que tendrás que meterle mano al código. Si solo aprendes a lanzarlo... estás perdido. Mejor intentalo a mano, y usalo solo como medio de automatización de las cosas que YA sabes hacer.

En cuanto a tu pregunta, SQLMap tiene un proceso de detección que te dice si es o no vulnerable, pero no es excesivamente fiable. No normalmente las busco a mano, y una vez que sé que las tengo ya uso alguna herramienta para sacar la información. Muchas veces ni siquiera me reconoce una SQLi que he encontrado a mano, y me toca "guarrear" un poco con el código.

Suerte!

andrewtwo dijo...

Hola cual es el proposito del parametro PHPSESSID=5c8195bf7834edb2e4ab7b6eae6af45f en el injection ?

Jose Selvi dijo...

@andrewtwo: En la SQLi no tiene ningún propósito en si, lo que pasa es que si la SQLi está dentro de una zona autenticada, tienes que pasarle de alguna manera a la herramienta la autenticación.

En el caso de SQLMap (y en muchos otros), lo que te pide es que le pases la cookie que contenga la clave de sesión de una que ya esté autenticada.

Anónimo dijo...

hay alguna manera de sacar la ruta para lleer los archivos con --file-read= cuando trato de generar algun error para que me bote el pach o ruta no me sale m sale un error configurado como podria hacer en ese caso

Jose Selvi dijo...

@Anónimo: Imagino que podrías intentarlo con rutas relativas y no absolutas. De todos modos, cuando este tipo de herramientas dan errores, es necesario ver la aplicación concreta, el error que da, etc. No te puedo dar una solución global para estas cosas. Lo siento.