Estoy explorando una vulnerabilidad en un sitio web de PHP que básicamente está plagado de inyecciones de SQL. Con SQLMap, logré volcar todas las tablas y obtener información básica (nombre de usuario, nombre de base de datos, nombre de host, aunque parece bastante inútil porque el servidor de base de datos no está disponible externamente). Mi objetivo es modificar los datos en una tabla específica, no mencionada en ninguna consulta SQL inyectable. Probé el interruptor --db-shell
de SQLmap, pero descubrí que no puedo hacer nada más allá de SELECT porque la combinación PHP + MySQL no permite realizar consultas apiladas.
Por lo tanto mi pregunta. Dado uno de los siguientes fragmentos de código:
mysql_query("SELECT * FROM sometable WHERE id=".$_GET['id']);
mysql_query("INSERT INTO sometable (id) VALUES (".$_GET['id'].")");
mysql_query("UPDATE sometable SET id= ".$_GET['id']);
mysql_query("DELETE FROM sometable WHERE id=".$_GET['id']);
¿Puedo modificar (eliminar, insertar, actualizar) datos desde fuera de Sometable, sin trucos de LOADFILE / INTO OUTFILE (y similares)? ¿La sintaxis de MySQL me dejaría hacerlo en este caso? Si la respuesta es "depende", ¿cómo sería la sintaxis de la consulta para dejarme pasar? No soy un DBA en este host. Tampoco hay procedimientos almacenados en el sitio web, solo algunas cosas muy básicas para aficionados que podrías aprender de un solo libro que ni siquiera menciona la seguridad.