Lamentablemente, estoy realizando un ataque de Inyección SQL contra un sitio web en la escuela (creado por el técnico). No puedo señalar a nadie al sitio en cuestión. El profesor nos ha permitido obtener los conocimientos necesarios. Tengo permiso para realizar pruebas en este sitio antes de que la gente me pregunte por qué quiero saber la respuesta . He encontrado lo que creo que es un campo uname inyectable para crear un nuevo usuario en el sitio web, sin embargo, cada vez que intento usar consultas de varias líneas, la consulta no se ejecuta. Antes de ejecutar una consulta INSERT, parece que se ejecuta una consulta SELECT para verificar si el uname ya existe en el sistema.
Supongo que el campo de nombre de usuario se puede explotar como si creara un nuevo usuario con una sola cita en su apellido:
uname: o'connor
Recibo el siguiente error detallado de SQL:
OH DEAR - unable execute SQL query: SELECT * FROM usertable WHERE uname='o'connor'
Sin embargo, si intento usar un punto y coma y ejecuto una instrucción de varias líneas, no se ejecuta, por ejemplo:
uname: admin'; UPDATE usertable SET password='pass' WHERE uname='admin';
Se produjo un error:
OH DEAR - unable execute SQL query: SELECT * FROM usertable WHERE uname='admin'; UPDATE usertable SET password='pass' WHERE uname='admin'; '
el script PHP que procesa los datos POST parece agregar una sola cita al final, pero mi entendimiento fue que mi consulta inyectada se ejecutaría antes de llegar a esta única cita. ¿Estoy ejecutando consultas multilínea correctamente?
** ACTUALIZACIÓN También he intentado:
uname: admin'; UPDATE usertable SET password='pass' WHERE uname='admin'; --
no sirve para nada el mismo problema que no se puede ejecutar y sé que todos estos nombres de columnas y de tablas son correctos. ¿Hay alguna forma de que pueda enviar la consulta original a un archivo de texto o algo así o cuando se devuelven los resultados, cambiar el valor de algo que se envía en la página a las contraseñas?