Muy buenas! Yo se que siempre que se hace una consulta para ver algún dato de alguna tabla, si el parametro que está dentro de la consulta no filtra los '' (en caso de que el parámetro fuera un string), o si no verifica que sea estrictamente un entero (en caso de que el parametro fuera un entero), la aplicación sería vulnerable a mandar un UNION SELECT y elegir datos de campos y tablas que nosotros queramos, siempre y cuando se respete el num de columnas respecto a los correspondientes de la consulta original, de ésta forma podríamos estar leyendo en la base de datos. Pero lo que yo siemrpe quise saber es cómo eliminar tuplas o tablas enteras. Para borrar todas las tablas intenté utilizando ; (púnto y coma) en medio de la inyección y luego la sentencia DROP ALL TABLES. Ejemplo:
http ://www.example.com/articles.php?id=-1' or 68 = '66; DROP ALL TABLES; --
Y no funciono, luego de googlear un poco encontré que la mayoria de aplicaciones no soportan el apilamiento de consultas, es decir, luego de llegar al punto y coma no se sigue leyendo más:
https://security.stackexchange.com/questions/33900/sql-injection-drop-all-tables
Documentación de PHP:
mysql_query() sends a unique query (multiple queries are not supported) to the currently active database on the server that's associated with the specified link_identifier.
Entonces por lógica, supongo que la única forma de eliminar tuplas o tablas sería lograr inyectar en una consulta que en vez de ser de tipo SELECT, fuera DELETE (para eliminar tuplas), o DROP (para eliminar tablas), lo que me parece muy dificil de encontrar, ya que por ejemplo un delete_user.php vulnerable que tuviera una consulta como ésta:
DELETE FROM users WHERE id = ?
yo supongo que el delete_user.php solo sería accesible para el admin, y si consiguieramos el panel y las credenciales del admin, ya no tendría utilidad la vulnerabilidad de SQL inejction, ya que el delete_user.php ya nos permite en si eliminar datos de la BD
Me gustaría saber si estoy acertado en ésto, o si tal vez estoy ignorando algún otra técnica para eliminar cosas de la BD. Y también saber si alguna vez encontraron alguna aplicacion vulnerable que permitiera la eliminacion de datos en la DB. Saludos y gracias!