Actualmente estoy haciendo una prueba de Blackbox en una aplicación web para fines de capacitación. Es un proyecto personal.
Además de mi proceso de prueba manual, usé un escáner automatizado para detectar vulnerabilidades obvias. Si bien esta herramienta solo encontró algunos problemas básicos, también detectó una vulnerabilidad potencial de SQLi que no noté antes. Puedo reproducir el error utilizando Burp, pero aún no puedo extraer los datos de la base de datos manualmente. Debido a eso, le di a sqlmap una oportunidad.
Antes de llegar a mi pregunta, permítame darle algunos detalles:
La vulnerabilidad parece existir en un formulario de inicio de sesión. Cuando la siguiente secuencia se envía al formulario
password=letmein&username=1%c0%00xa7%c0%a2
se devuelve un error de mysql:
Advertencia: mysql_fetch_array () espera que el parámetro 1 sea un recurso, dado booleano
He reducido la secuencia al byte % c0 . Este valor urlencoded lleva a la advertencia. Hasta ahora, no estoy seguro de por qué exactamente este valor conduce a la advertencia.
La configuración de sqlmap se ve así:
sqlmap -u http://thehost/include/login.php --method POST --data "password=letmein&username=1%c0%00xa7%c0%a2" -p "username" --dbms=mysql
Que genera solicitudes / cargas útiles en la siguiente forma:
[PAYLOAD] 1%c0%00xa7%c0%a2)).("(,)'(
[TRAFFIC OUT] HTTP request [#3]:
POST /include/login.php HTTP/1.1
Host: thehost
Content-type: application/x-www-form-urlencoded; charset=utf-8
Accept: */*
Content-length: 70
Connection: close
Lo que me gustaría hacer / intentar es cambiar el punto de inyección dentro de los datos POST. es posible? Sé que es posible especificar un punto de inyección dentro de una solicitud GET. Además, ¿alguien tiene una idea de por qué el byte % c0 inyectado confunde la consulta?
gracias