Siguiendo con las entradas de Hacking desde 0, hoy vamos a ver como realizar una inyección SQL básica, a mano, nada de herramientas xD.
Arrancamos nuestra máquina DVWA, establecemos el nivel en "low" y vamos a "SQL Injection".
Lo primero es ver como se comporta la pagina de manera normal, y como lo hace frente a una inyección de un un carácter no esperado.
Comportamiento normal |
Comportamiento con carácter no esperado |
Bien, pues empecemos a hacerle preguntas a la base de datos a ver que nos contesta. Si le pasamos un "1' AND 1=1#" vemos que nos devuelve como resultado lo siguiente.
Veamos que más podemos preguntarle y que nos responde. Esta vez le pasamos un "1' and 1=1 union select database(), user()#" (recuerda que la sentencia SQL es lo que hay dentro de las comillas dobles, sin incluirlas). Lo que le estamos diciendo es que concatene una consulta, que nos devuelva el resultado del nombre la base de datos actual y el nombre de usuario y host (Gracias a Mario por aquellas clases de MySQL xD).
Seguimos. Esta vez le pasamos como sentencia "1' and 1=1 union select null, table_name from information_schema.tables#". Le estamos diciendo que nos muestre lo que hay en la tabla information_schema, lo que nos devuelve:
Ahora que ya tenemos el nombre de la tabla "users" vamos a volcar las contraseñas de todos los usuarios del tirón usando la sentencia "1' and 1=1 union select user, password from users#". Le pedimos que nos devuelva las contraseña de la tabla users.
Hemos conseguido sacar todas las contraseñas de los usuarios, pero ahora tenemos un pequeño problema, hemos obtenido los hashes de las contraseñas pero no podemos usarlos así.
En otra entrada veremos como podemos crackear esos hash para nuestro uso y disfrute, ya que en este caso solo tratábamos de realizar un SQLi a mano.
Roberto García (@1GbDeInfo)