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...
[Enlace externo eliminado para invitados]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?
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
Siempre se empieza desde el 25 el order by ?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:
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...

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
Bueno, siguiendo con lo que nos interesa..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
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..

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]

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]

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?

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--->
SaludosHay archivos adjuntos..
[Enlace externo eliminado para invitados]
[Enlace externo eliminado para invitados]