Un de mes amis a créé une application Web que je teste pour le plaisir. J'ai remarqué qu'il permet à un utilisateur de définir la limite d'une certaine requête, et cette limite n'est pas nettoyée.
Par exemple, je peux choisir n'importe quel nombre ou chaîne que j'aime comme limite. Je me rends compte qu'il s'agit d'une injection SQL, et je peux facilement injecter des commandes SQL, mais est-il vraiment possible d'extraire des données ou de faire des dégâts avec un LIMIT
?
Exemple de la requête:
SELECT * FROM messages WHERE non lus = 1 LIMIT ** USER INPUT ICI **
I comprenez que si l'injection était dans la clause WHERE
, j'aurais pu facilement faire un UNION SELECT
pour extraire des informations, mais est-ce vraiment possible si l'entrée de l'utilisateur était après le limite?
Pour plus d'informations, mon ami utilise le SGBD MySQL, vous ne pouvez donc pas vraiment exécuter deux requêtes telles que:
SELECT * FROM messages WHERE non lus = 1 LIMIT 10; DROP TABLE messages--
Ce n'est pas possible.