[SOLUCIONADO] SQLi - Obtener datos a través de formulario login

Iniciado por sdfghjk, Noviembre 11, 2015, 02:58:04 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Noviembre 11, 2015, 02:58:04 PM Ultima modificación: Junio 28, 2020, 05:45:46 AM por sdfghjk
Gracias Gabriela.

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?

En ese caso podes probar con un "error based".

Por ejemplo:

Código: mysql

user: 1' and extractvalue(1, concat(0x3a, version()))-- --
Web: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Twitter: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

El payload para solucionar el reto 10 era user y pass:
' OR '1'='1

saludos.


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Gracias a los dos por vuestras respuestas

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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.

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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í:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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 - No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Nivel 10/11 - No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Un saludo y gracias nuevamente.
Contacto: @migueljimeno96 -

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

Noviembre 13, 2015, 02:31:41 AM #5 Ultima modificación: Noviembre 13, 2015, 02:41:47 AM por EPSILON
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!

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!