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

  • 8 Respuestas
  • 3105 Vistas

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

Desconectado sandwich

  • *
  • Underc0der
  • Mensajes: 13
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
Estoy tratando de obtener datos de una BD a través de un formulario de login (solo solicita user y pass).
Aclaro que no sé si esto es posible.

El formulario es de tipo POST y el problema  es que inyecto código lo bypasseo.
Se trata de un wargame externo, aclaro esto porque como resultado no quedo logueado, si no que paso a otro enlace distinto.

He probado diferentes inyecciones, pero puedo poner como ejemplo la siguiente de donde pretendo obtener la version de la BD (por si sirve de algo)
  • user: 1' UNION SELECT VERSION(),null-- -
  • pass: (en blanco)
El resultado que obtengo es simplemente que supero la pantalla de login siendo redireccionado a otra web.

¿Alguien sabría orientarme?

Un saludo y gracias de antemano.
« Última modificación: Noviembre 13, 2015, 03:49:51 pm por Gabriela »

Desconectado seth

  • *
  • Underc0der
  • Mensajes: 264
  • Actividad:
    0%
  • Reputación 2
    • Ver Perfil

Re:SQLi - Obtener datos a través de formulario login

  • 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?

Desconectado q3rv0

  • *
  • Underc0der
  • Mensajes: 207
  • Actividad:
    0%
  • Reputación 1
  • %ERRORLEVEL%
    • Ver Perfil
    • q3rv0
    • Email

Re:SQLi - Obtener datos a través de formulario login

  • en: Noviembre 11, 2015, 10:41:17 pm
En ese caso podes probar con un "error based".

Por ejemplo:

Código: MySQL
  1. Solo los usuarios pueden ver los links. Registrate o Ingresar: 1' and extractvalue(1, concat(0x3a, version()))-- --
Web: Solo los usuarios pueden ver los links. Registrate o Ingresar

Twitter: Solo los usuarios pueden ver los links. Registrate o Ingresar

Desconectado sandwich

  • *
  • Underc0der
  • Mensajes: 13
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Re:SQLi - Obtener datos a través de formulario login

  • en: Noviembre 12, 2015, 08:34:25 am
Gracias a los dos por vuestras respuestas

@Solo los usuarios pueden ver los links. Registrate o Ingresar

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.

@Solo los usuarios pueden ver los links. Registrate o Ingresar

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í:
Solo los usuarios pueden ver los links. Registrate o Ingresar

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 - Solo los usuarios pueden ver los links. Registrate o Ingresar
Nivel 10/11 - Solo los usuarios pueden ver los links. Registrate o Ingresar


Un saludo y gracias nuevamente.
« Última modificación: Noviembre 12, 2015, 08:36:33 am por sandwich »

Desconectado Jimeno

  • *
  • Underc0der
  • Mensajes: 367
  • Actividad:
    0%
  • Reputación -1
  • NULL
  • Skype: migueljimeno96
  • Twitter: "><<img src=y onerror=prompt();>
    • Ver Perfil
    • Twitter

Re:SQLi - Obtener datos a través de formulario login

  • en: Noviembre 12, 2015, 11:00:42 am
El payload para solucionar el reto 10 era user y pass:
' OR '1'='1

saludos.


Solo los usuarios pueden ver los links. Registrate o Ingresar
Gracias a los dos por vuestras respuestas

@Solo los usuarios pueden ver los links. Registrate o Ingresar

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.

@Solo los usuarios pueden ver los links. Registrate o Ingresar

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í:
Solo los usuarios pueden ver los links. Registrate o Ingresar

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 - Solo los usuarios pueden ver los links. Registrate o Ingresar
Nivel 10/11 - Solo los usuarios pueden ver los links. Registrate o Ingresar


Un saludo y gracias nuevamente.
Contacto: @migueljimeno96 -

Desconectado seth

  • *
  • Underc0der
  • Mensajes: 264
  • Actividad:
    0%
  • Reputación 2
    • Ver Perfil

Re:SQLi - Obtener datos a través de formulario login

  • 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

Desconectado EPSILON

  • *
  • Underc0der
  • Mensajes: 363
  • Actividad:
    0%
  • Reputación 0
  • [email protected]
  • Skype: epsilon.root1
    • Ver Perfil

Re:SQLi - Obtener datos a través de formulario login

  • 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!
« Última modificación: Noviembre 13, 2015, 02:41:47 am por EPSILON »

Desconectado sandwich

  • *
  • Underc0der
  • Mensajes: 13
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Re:SQLi - Obtener datos a través de formulario login

  • en: Noviembre 13, 2015, 09:39:30 am
@Solo los usuarios pueden ver los links. Registrate o Ingresar, @Solo los usuarios pueden ver los links. Registrate o Ingresar

El tema está aclarado y el nivel 10 y 11 completados.
Gracias por vuestros comentarios pero creo que hubo un malentendido

El nivel 10 se bypassea fácil, lo sé, pero cuando quieras realizar el nivel 11 tendrás que regresar al nivel 10 y hacerlo con la inyección comentada por q3rv0.
Insisto, el nivel 11 se resuelve a través del 10, de ahí la pista MACHINE TIME.

Desconectado EPSILON

  • *
  • Underc0der
  • Mensajes: 363
  • Actividad:
    0%
  • Reputación 0
  • [email protected]
  • Skype: epsilon.root1
    • Ver Perfil

Re:SQLi - Obtener datos a través de formulario login

  • 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!

 

[SOLUCIONADO] ¿Kali Linux o Kali Linux Ligth ?

Iniciado por worq

Respuestas: 2
Vistas: 24525
Último mensaje Noviembre 21, 2017, 12:28:54 pm
por Codig0Bit
[SOLUCIONADO] Multiuploader de imagenes con mysql, hosting de imagenes con mysql

Iniciado por graphixx

Respuestas: 4
Vistas: 11322
Último mensaje Marzo 26, 2013, 05:42:58 pm
por Xt3mP
[SOLUCIONADO] ¿Como publicar un software como software libre?

Iniciado por FuriosoJack

Respuestas: 2
Vistas: 9998
Último mensaje Mayo 23, 2017, 07:24:22 am
por HATI
[SOLUCIONADO] Linux Mint, errores, errores y mas errores...

Iniciado por n1sendev

Respuestas: 12
Vistas: 14286
Último mensaje Noviembre 22, 2017, 06:50:55 am
por RuidosoBSD
[SOLUCIONADO] Ayuda urgente con Virus "Virus.Win32Sality"

Iniciado por Napsters

Respuestas: 6
Vistas: 13601
Último mensaje Junio 11, 2012, 03:38:18 am
por Satyricon