Bueno traigo este tutorial muy bien explicado y realizado por mi bro Dangus, con este fue con el que yo aprendi, espero lo entiendan:

Tutorial de Inyeccion SQL by Dangus
Hola a todos, les haré un pequeño tutorial de como hacer una inyección SQL, nose mucho ni soy experto pero les mostraré todo lo que se :-D
Lo empiezo hoy, y luego iré agregando mas partes, espero que les guste.. Lo haré tipo a las revistas hack x crack porque a mi me gusto mucho como lo explicaban todo, pero si no les gusta me lo dicen y lo hago de nuevo :-D
----------------------------------------------------------------------------------------

Empezamos

¿Que es una inyección SQL?

Pues muy fácil, una inyección SQL nos permite modificar el comportamiento de las consultas a la base de datos permitiendonos acceder a datos no públicos o modificar la base de datos a nuestro antojo.

Muchas veces se habla de que ésta és una técnica complicada, que es necesario aprender SQL. Ésto es falso, podemos inyectar código de una forma totalmente mecánica sin entender el porqué del fallo, lo que lo hace en una técnica peligrosa, aunque también hay técnicas de inyección SQL avanzadas.

Bueno basta con la teoria empezemos con la práctica, solo les mostraté una técnica porque es la unica que se :P Pero sigo aprendiendo al igual que ustedes deberian hacerlo para no quedarse estancados.

Buscamos nuestra web vulnerable..

¿como las buscamos?
Con un Dork

¿Y Como son o que son los dorks?

Pues la definicion de dork seria una "busqueda exacta". Google contiene unos "comandos" con los que podemos realizar busquedas a nuestro gusto, A continuacion les mostraré la forma de hacer una busqueda en google con un dork..

Generalmente, las websites vulnerables contiene esto...
php?algo aca=
EJ:

[Enlace externo eliminado para invitados]

aqui les dejo algunos dorks:

allinurl:.php?id=
allinurl:*.php?id=
allinurl:.php?file=
allinurl:*.php?file=
allinurl:.php?fileid=
allinurl:*.php?fileid=
allinurl:.php?file_id=
allinurl:*.php?file_id=
allinurl:.php?page=
allinurl:*.php?page=
allinurl:.php?pageid=
allinurl:*.php?pageid=
allinurl:.ph p?page_id=
allinurl:*.php?page_id=
allinurl:.php?pagenum=
allinurl:*.php?pagenum=
allinurl:.php?page_num=
allinurl:*.php?page_num=
all inurl:.php?cat=
allinurl:*.php?cat=
allinurl:.php?cat_id=
allinurl:*.php?cat_id=
allinurl:.php?catid=

----------------------------------------------------------------------------------------

Bien ya tenemos nuestra web en el objetivo

Les mostraré con esta, pero si van a probarlo porfavor usen un buen proxy, el anonimato siempre es nuestro mejor aliado, Porque creen que usamos nicks? pues para no dar a conocer nuestra verdadera identidad, aunque si no alteras nada, no borras nada no creo que te busquen pero por las dudas a protegerse.

[Enlace externo eliminado para invitados]

ok, buscamos algo como lo citado anteriormente...

Me olvidé :? que tenia que buscar?
php?xxx=xxx <--- seguimos?

ah ya..
ok. Buscamos y buscamos y encontramos esta...
Ojo que noticias.php?id=1 es como si en bat dijeramos set p/ =
asi es una variable, si 77 la cambiamos por 73 cambiara la noticia, pero no hacia falta que lo explique verdad?
[Enlace externo eliminado para invitados]

Bien, seguimos avanzando :o

Para comprobar si nuestra web en realidad es vulnerable hacemos lo siguiente...

para comprobar? si acabas de decir que buscaremos web vulnerables
Si dije eso, buscamos web's con las caracteristicas antes citadas, pero hay algunas web's con esas caracteristicas que ya no son vulnerables porque han sido parchadas.

Bueno como decia, para comprobar si es vulnerable agregamos lo siguiente..

[Enlace externo eliminado para invitados]

Vieron que le agregué
+and+1=0

Pués si, eso lo agrego para demostrar si es o no vulnerable..
Si es vulnerable desaparece toda o parte de la web..

Otra forma de averiguar si es vulnerable.. es agregandole una comilla simple delante del =
Ej.

[Enlace externo eliminado para invitados]

vieron que agregué '
En este caso aparece lo siguiente...

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/pimenta/public_html/noticias.php on line 34

Hay varios errores de mysql pero si sale justamente eso. warning: mysql....... es porque es vulnerable.

Seguimos...

Ahora buscamos el numero de columnas esta bien?

Ah eso lo entiendo, contamos cuantas lineas tiene la pagina no?
No, no es asi.. explico.. Para buscar el numero de columnas hacemos lo siguiente

[Enlace externo eliminado para invitados]
Se ve que agregué +order+by+25--

Si la web tiene mas de 25 columnas aparecerá normal de lo contrario tendremos que ir restando numeros de columnas asi..


[Enlace externo eliminado para invitados] mal
[Enlace externo eliminado para invitados] bien

entonces subiremos de a 1 para encontrar el numero de columnas correctas

[Enlace externo eliminado para invitados] bien
[Enlace externo eliminado para invitados]voilá, de nuevo mal

Por lo tanto el número correcto de columnas es 8 porque es el ultimo número que tira la web correcta..

[Enlace externo eliminado para invitados] <--- Bingo
Lo primero que tenemos que hacer es averiguar el número de columnas que tiene la tabla para poder hacer nosotros consultas, para eso se utiliza order by:
Siempre se empieza desde el 25 el order by ?
No, no hace falta nada mas lo muestro desde un numero grande porque hay web's hasta mas de 30 tablas... Por ende lo puedes empezar tanto de 50 como de 10 pero si te da mal la web sigues bajando y si te da bien lo subes..

Ahora hacemos nuestra consulta

Ahora que ya tenemos el número de columnas, 8, podemos hacer nuestra consulta:

[Enlace externo eliminado para invitados]
y nos saldrá algo asi...
Imagen


y que es eso que has puesto?
Union: Se usa para combinar los resultados de varias sentencias SELECT.
Select: Nos permite consultar los datos almacenados en una tabla de la base de datos.

Luego ponemos las 8 columnas numerados del 1 al 8, lo que nos permitirá ver que campos se imprimen, los cuales nos permitirán a nosotros imprimir resultados.

Imprimir? tengo que conectar mi impresora? :?
No, al imprimir me refiero a los resultados que "imprimirá" en la pantalla es decir resultados que mostrará. los resultados pueden ser 1,2,3,4 etc..

Bueno, pero no logro distinguir que le has agregado al link
Bueno lo que eh agregado es un signo negativo "-" delante de la variable (es decir el numero que esta despues del signo igual) y las uniones +union+all+select+ y los numeros de tablas 1,2,3,4,5 en sintesis le agregué esto..


-xxx+union+all+select+1,2,3,4,5,6,7,8--


Pero donde estan esos dichosos numeros que me imprimen?

Bueno ya aclarado esto seguimos, ahora imprimiremos la información que nos interesa, la pass y el user..

Venga, ya estoy listo
En los numeros remplazados le puedes cambiar por...
version(): Devuelve la versión del servidor SQL.
database(): Devuelve el nombre de la base de datos.
user(): Devuelve el nombre de usuario conectado a la base de datos.
connection_id(): Devuelve el ID de una conexión. Cada conexión tiene su propio y único ID.
Pero no me detendre a explicarlo porque no, nos interesa eso.. ademas que no lo entiendo muy bien.. XDDD recuerden aun soy newbie :P
Bueno, siguiendo con lo que nos interesa..

Como en pantalla nos imprimió el 4 y el 5 estos números son los que nos ayudarán a imprimir información--> asi

[Enlace externo eliminado para invitados]

Notese que agregué..

group_concat(table_name) en vez del 3 como tambien lo podria poner en vez del 2
y
+from+information_schema.tables-- al final de los numeros

Esto sirve para que nos muestre en una sola linea toda la informacion de esa tabla..

Ojo, no siempre sale toda la información, a veces no sale como ahora..
Imagen


En ese caso tenemos que usar

solamente table_name y al final +from+information_schema.tables+limit+1,1

[Enlace externo eliminado para invitados]

Nos aparece CHARACTER_SETS Perfecto, el nombre de la tabla y seguimos buscando

[Enlace externo eliminado para invitados]

[Enlace externo eliminado para invitados]

Hasta que nos aparezca algo interesante que nos llame la atencion como user, admin, tbl_user, usuario, etc..

[Enlace externo eliminado para invitados]
Imagen


en esta nos aparece Usuarios, perfecto esa es la tabla que necesitamos.

Pero como deberia hacer? de la primera forma o de la segunda?
De las dos formas se puede hacer.. Pero la primera es mas rapida, aunque si no funciona la segunda nos respaldará.

Imprimiendo los que nos interesa
Bien para imprimir los datos simplemente tenemos que cambiar..

information_schema.tables-- por la tabla que encontramos, en este caso usuarios
y
group_concat(table_name) por... aqui se va probando, user, admin, pass, usuario, contra, login, clave.. etc

Quedaria asi..

[Enlace externo eliminado para invitados]

Ya eh probado de todo admin, user, pass, contraseña, mail, sol, luna, universo, oxidodesoxirribonucleico y no me sale
jajaj no era para probar tanto.. :P Okay, te muestro otra forma :o

Esta bien, pero yo la quiero buscar esta bien?
Perfecto yo nada mas te muestro...

Ahora Buscaremos las Columnas

Ahora que ya tenemos la tabla, sólo nos queda saber que datos imprimir. Nosotros queremos el nombre de usuario y la contraseña, pero tenemos que saber como se llaman esas columnas para poderlas imprimir. Tracear columnas es similar a tracear tablas, se usa lo siguiente:

[Enlace externo eliminado para invitados]

Bien esto nos facilita muchisimo el trabajo, ya nos dara como se llama la columna que tenemos que buscar...

Lo de la tabla en ascci tenemos que hacer lo siguiente, ya que nuestra tabla que usaremos se llama usuarios buscaremos en un convertidor usuarios, y nos saldra los siguiente.. 117,115,117,97,114,105,111,115 ahora cambiamos donde dice tabla en ascci y ponemos los que nos convirtió, asi...

[Enlace externo eliminado para invitados]
Imagen


Notese que agregué
+from+information_schema.columns+where+table_name=char(tabla en ascci)
y
group_concat(column_name)

Muy bien, y de donde descargo ese programa?
Buscalo en google.. XDD

Porfavor dime donde lo descargo :-(

ok. ok. la funente misma donde la descargue nose, pero te paso el mio..
[Enlace externo eliminado para invitados]

Gracias. Pero no tiene virus lo que me mandas?
Me vuelves a hacer esa pregunta y te envio cientos de virus a tu pc.. si no confias, testealo :-x

Bueno, pero no te enojes... ya lo probe y funciona :o
Bien, seguimos.. ahora ya tienes los nombres de las columnas, nada mas nos resta cambiarlos sabes como no?

Si, si lo se
asi mira..

[Enlace externo eliminado para invitados]
y
[Enlace externo eliminado para invitados]

Nooooo, por que me lo dijiste.. estaba a punto de hacerlo
Bien, ahora el resto te lo dejo a ti, logueate y ya esta :-D

como me logueo?
No era que querias hacerlo tu solo?

Me ayudas en esta porfavor?
ok. Puedes probar admin /adm login webmail /admin/login etc.. pero busca un escaner, te facilito uno. [Enlace externo eliminado para invitados], ahora escanea la web y busca el directorio donde tienes que loguearte.. en este caso ese directorio es...

Si, si ya se el directorio es [Enlace externo eliminado para invitados] y es este no?

Imagen


Muy bien, ya te logueaste ahora leyendo sabras como modifar y donde modificar..

Este tuto es simplemente educativo, no me hago responsable de lo que puedan hacer con el.. es para saber como funcionan las vulnerabilidades de la web...

Como en esta web no sucede eso, me olvide mencionarles que algunos pass estan encriptado en md5 y hay que romperlos, nuestro amigo luban hizo un post sobre crackeadores de md5 pasense por ahi... y no, no te diré donde esta, buscalo tu el post..

Este tuto fue echo exclusivamente para <---OTN--->
Hay archivos adjuntos..
[Enlace externo eliminado para invitados]
[Enlace externo eliminado para invitados]
Saludos
"CUANDO el poder DEL AMOR supere EL AMOR por el poder, el MUNDO conocerá la PAZ" - Jimi Hendrix
Imagen
luban5 Justo lo que tanto ansiaba buscar , muchiiiiiiiiiiiiiiiiiiiiiiiiiiiiisimas gracias ,
saludos
Imagen

<< Proceso de avs que detectan un server antes de pasar por indetectables y despues >>
Detect... >>Clean
Cuando me preguntaron sobre algún arma capaz de contrarrestar el poder de la bomba atómica yo sugerí la mejor de todas: La paz.
Albert Einstein
Que bueno que te haya gustado, si tienes algun problema con las inyecciones o algo me avisas.

Por cierto, muchas veces lo mas facil es sacar el user y pass, lo que mas se complica es la pagina del login en algunos casos.

Para eso hay varios path finder por ejemplo en php que buscan esos directorios, o como alli recomiendan el intellitamper.

Saludos
"CUANDO el poder DEL AMOR supere EL AMOR por el poder, el MUNDO conocerá la PAZ" - Jimi Hendrix
Imagen
Excelente tutorial

Saludos
¿Si usted muriera hoy esta seguro que iría al cielo?
http://www.antesdelfin.com/salvo.html

© Indetectables Team
Que bueno que les guste.

Aprovecho para aclarar que algunas veces la pass viene en MD5, aqui hay un par de herramientas que pueden servir para crackear estas pass:

--> MD5 Crack By Xa0s

--> MD5 Cracker

Saludos
"CUANDO el poder DEL AMOR supere EL AMOR por el poder, el MUNDO conocerá la PAZ" - Jimi Hendrix
Imagen
Bueno MichBukana, algo que debes tener en cuenta es que las tablas que tienen todo el nombre en mayusculas por ejemplo la que usaste (COLUMNS) son por asi decirlo predeterminadas de la base de datos, eso quiere decir que no almacenan la informacion que nosotros requerimos en este caso que es el user y la pass, eso te ayudara a ahorrar algo de tiempo buscando la tabla que contiene la informacion requerida, como vez en la siguiente imagen:

Imagen


Al principio aparecen varias tablas que son 'predeterminadas' asi que esas no las usaremos para imprimir los datos. Por lo general esa informacion se encuentra en la tabla usuarios o derivados de este.

Si tienes mas dudas podemos discutirlo por msn o mp.

Saludos
"CUANDO el poder DEL AMOR supere EL AMOR por el poder, el MUNDO conocerá la PAZ" - Jimi Hendrix
Imagen
MichBukana escribió:Hola q tal, estaba siguiente el tuto al pie de la letra en una web vulnerable y me choque con que dentro de la tabla usuarios no se encuenta el campo contraseña ni nada solo veo
email, id , nombre( en el que no hay nada), numero_imagen.

y mirando entre las demas tablas y encontre una (COLUMNS) que contenia esto

TABLE_CATALOG,TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,ORDINAL_POSITION,COLUMN_DEFAULT,IS_NULLABLE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,CHARACTER_OCTET_LENGTH,NUMERIC_PRECISION,NUMERIC_SCALE,CHARACTER_SET_NAME,COLLATION_NAME,COLUMN_TYPE,COLUMN_KEY,EXTRA,PRIVILEGES,COLUMN_COMMENT

pero voy a hacerle esto:
xxxxxx.php?id=-464+union+all+select+1,2,3,4,5,COLUMN_KEY,7,8,9+from+COLUMNS--

que es donde pienso que pueden estas las pass y me tira un error

Table 'xxxxxx_tds.COLUMNS' doesn't exist asi que si me pudieseis ayudar os lo agradeceria para ser que es por culpa de ser MAYÚSCULAS

Salu2!

Una cosa son las columnas y otra las tablas
Tu lo que necesitas principalmente es encontrar la tabla cuando hayas
encontrado la tabla dentro de ella hay las columnas.

Y dentro de cada columna hay las tablas que nos dan información que contendrá los datos necesarios para la web.

Yo miraria en esa web esto..

-1+union+all+select+1,2,3,4,5,6,7,8,9+from+administrador--

La ultima palabra que pone administrador ve probando las tablas y ve utilizando administrador, admin, login, pass..
etc.. si no te da ninguna de esas utiliza Schema y sigue buscando.


Saludos!
Muy bueno muxchas gracias..tengo que estudiralo..;)

¿Por que tanta gente vive en el pasado?. No era mejor ser joven antes,debes crear tus propios iconos,tu propia manera de vivir.

Lo hecho,hecho esta. Mirar hacia atras para buscar la inspiracion,es copiar el pasado.Eso no es ser indetectable xD
Se tu mismo,haz algo nuevo. ¿Sabes lo que quiero decir no?
Responder

Volver a “Auditoria Web”