Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: sdfghjk en Noviembre 11, 2015, 02:58:04 PM

Título: [SOLUCIONADO] SQLi - Obtener datos a través de formulario login
Publicado por: sdfghjk en Noviembre 11, 2015, 02:58:04 PM
Gracias Gabriela.
Título: Re:SQLi - Obtener datos a través de formulario login
Publicado por: seth en Noviembre 11, 2015, 09:11:51 PM
Esa es una inyeccion blind. Si la consulta devuelve datos re redirige y si no devuelve nada te muestra un error, verdad?

Podes hacer algo asi: -1234' or 1 and (substring(version(),0,1) =="5") -- -

-1234 normalmente no existe
el or 1 hace lo mismo que en tu consulta
substring(version(),0,1) te da el primer caracter de version()
al final, la consulta devuelve datos solo si el primer caracter de version() es "5"

no lo estoy probando, asi que puede haber algun error pero la idea es esa

googlea blind sql injection y time based sql injection
si le mandas sqlmap no lo explota?
Título: Re:SQLi - Obtener datos a través de formulario login
Publicado por: q3rv0 en Noviembre 11, 2015, 10:41:17 PM
En ese caso podes probar con un "error based".

Por ejemplo:

Código (mysql) [Seleccionar]

user: 1' and extractvalue(1, concat(0x3a, version()))-- --
Título: Re:SQLi - Obtener datos a través de formulario login
Publicado por: Jimeno en Noviembre 12, 2015, 11:00:42 AM
El payload para solucionar el reto 10 era user y pass:
' OR '1'='1

saludos.


No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Gracias a los dos por vuestras respuestas

@seth (https://underc0de.org/foro/index.php?action=profile;u=38096)

No tengo claro si es Blind SQL, tal vez no lo sea porque devuelve errores MySQL cuando la inyección ha provocado que la sintaxis no sea correcta (corrígeme si me equivoco)

Lo que puedo describir es su comportamiento:

  • - Si la consulta se cumple me redirige (cómo tu has dicho)
  • - Si no se cumple me muestra "Invalid username or password"
  • - Si la inyección provoca un error en MySQL me muestra el error.
La inyección que has puesto no ha resultado, pero admito que tampoco la he revisado ni tratado de hacer cambios sobre ella por lo que no descarto que esté bien.

@q3rv0 (https://underc0de.org/foro/index.php?action=profile;u=10091)

Tu inyección creo que si funciona, os relato como he resuelto el pasatiempo  y si es posible me confirmas si es la manera correcta.
Yo estaba probando con esta otra inyección que es prácticamente igual.

' or extractvalue(0x0a,concat(0x0a,(select database()))) and ''='

La copié de aquí:
http://www.securityidiots.com/Web-Pentest/SQL-Injection/dump-database-from-login-form-sql.html (http://www.securityidiots.com/Web-Pentest/SQL-Injection/dump-database-from-login-form-sql.html)

Revisaré la documentación de mysql relacionada con substring, extractvalue y concat para ver como operan dado que hasta ahora lo he hecho reaprovechando y copiando el código sin más.

Ambas inyecciones me devuelven esto:

XPATH syntax error: ':5.5.44-0+deb8u1'

(No estoy seguro si es normal o al menos entra dentro de lo esperado el mensaje XPATH syntax error, pero al menos retorna info).

He conseguido los datos que necesitaba para el pasatiempo teniendo que recurrir a múltiples inyecciones.
Los pasos han sido estos.
1) Obtener el nombre de la tabla que contiene informacion de los logins.
2) Obtener los nombres de los campos de la tabla.
3) Obtener la password del usuario que me interesa.

Os dejo el enlace al wargame por si lo quereis probar, lo pongo acortado para que google no lo indexe.
Nivel Inicial - http://goo.gl/bIIEoZ
Nivel 10/11 - http://goo.gl/qsG3hC


Un saludo y gracias nuevamente.
Título: Re:SQLi - Obtener datos a través de formulario login
Publicado por: seth en Noviembre 12, 2015, 09:32:20 PM
Si la sintaxis no es correcta, es normal que devuelva un error. Hay un error, que esperas que pase?

Describiste una forma de diferenciar si una consulta devuelve  valores o no. Con eso alcanza para sacar datos booleanos. Preguntas si el primer caracter es un 1. Si no lo es preguntas si es un 2. Asi hasta que el login funcione, ahi sabes que acertaste. Podes bajar los tiempos con una busqueda dicotomica y prediciendo valores
Título: Re:SQLi - Obtener datos a través de formulario login
Publicado por: EPSILON en Noviembre 13, 2015, 02:31:41 AM
Como dice Jimeno ese login es bypasseable con ese simple paýload y a la vez es vulnerable a Blind SQLi (justamente porque devuelve errores y no la consulta en texto plano), las inyecciones Blind no son iguales a las comunes que si devuelven resultados, el blind es SI o NO.
El reto continua y contiene una DB llamada "challenge" y una tabla llamada "users" que por lo visto ya las tienes ;). En el foro y en internet hay mucha info. sobre como explotar esta vulnerabilidad. Suerte!

Saludos!
Título: Re:SQLi - Obtener datos a través de formulario login
Publicado por: EPSILON en Noviembre 13, 2015, 03:30:05 PM
Lo sabemos y por eso te dije que el reto continua, ya lo hicimos hace tiempo, y esta bien resuelto con XPath Injection.

Si la duda esta resuelta, doy por solucionado el post y lo cierro, cualquier otra duda, la planteas en este mismo foro.

Saludos!