Laboratorio: Inyección SQL con errores condicionales
En este veremos un poco los errores condicionales, añadiremos consultas SQL con errores evidentes que nos podrán dar información vital.
Last updated
En este veremos un poco los errores condicionales, añadiremos consultas SQL con errores evidentes que nos podrán dar información vital.
Last updated
Toca nombrar un nombre de tabla no valido debido a que en oracle se debe especificar siempre el nombre de la tabla en una consulta, ahora bien, lo añadimos y no nos aparecerá error en la pagina sin embargo veamos con una tabla fake.
Nos mostro ese error, este comportamiento sugiere fuertemente que el back-end está procesando su inyección como una consulta SQL.
Pero cuando es la consulta de Dual, no aparece nada, el error no persiste, entonces
Como esta consulta no devuelve un error, puede inferir que esta tabla sí existe. Tenga en cuenta que la WHERE ROWNUM = 1
condición es importante aquí para evitar que la consulta devuelva más de una fila, lo que rompería nuestra concatenación.
Esto solo nos deja saber que esto demuestra que puede desencadenar un error condicionalmente a la veracidad de una condición específica.
Y con base a esto podemos intentar verificar si existe el username=administrator de la tabla Users, jimentendes.
Aquí retomamos lo de la longitud de la password.
Despues de intentar la longitud de la password con varias longitudes, 2,3,4,6,8,10,15,18,19,30, finalmente dimos con la correcta la longitud de la contraseña es 20.
Ya no nos salta el error de server error.
Ahora simplemente vamos probando cada caracter correspondiente de la contraseña con burp intruder con el payload, sabemos que la contraseña es alfanumericos en minuscula.
No olvidar los '§a§' que son los parametros o marcadores de posicion para poder llevar a cabo el payload, que en este caso sera una payload de lista simple.
Vamos tomando las posiciones de las que nos retornen 500 Status Code.
En este momento ya tenemos la contraseña, iteramos la posicion 20 veces, la contraseña exitosa fue: awjf71t673zmr1wwrfq0
, en la terminal falta el 0 pero la posicion 20 era el numero 0 para terminar la contraseña.
Eso es todo gracias por leerme :)