2010-03-01 1 views
2

J'essaie de trouver des failles de sécurité dans une page MySQL. C'est une tâche pour un apprentissage de classe sur SQL. Grâce à une zone de texte, ils auront accès à une base de données pour soumettre des requêtes et voir si elle renvoie les ensembles de données corrects. Je veux savoir s'il y a quelque chose de malveillant qu'ils pourraient faire.Aider à trouver des failles de sécurité dans cette page MySQL?

Ceci est le résultat d'une requête SHOW GRANTS:

Grants for [email protected] 
GRANT USAGE ON *.* TO 'user'@'localhost' IDENTIFIED BY PASSWORD 'the password' 
GRANT SELECT ON `server\_dir`.* TO 'user'@'localhost' 
GRANT SELECT ON `server\_dir\_ans`.* TO 'user'@'localhost' 

Quelqu'un peut-il expliquer ce que ces déclarations signifient GRANT? Qu'est-ce que *.* et GRANT USAGE? Que puis-je faire d'autre sur ce site pour le casser?

Le site lui-même est écrit en PHP.

En réponse à la Rook, quand j'Execute:

UPDATE mysql.user set Password = password("hacked"); 
FLUSH PRIVILEGES; 

Je reviens:

Error Number: 1142. UPDATE command denied to user 'user'@'localhost' for table 'user' 
Error Number: 1227. Access denied; you need the RELOAD privilege for this operation 

Comme je le pensais, il semble que l'utilisateur ne dispose pas des autorisations nécessaires pour le faire. Ou est-ce que j'ai mal compris quelque chose?

+0

L'utilisation est limitée, je me trompais je pensais qu'il pourrait modifier toutes les bases de données et les tables, mon mauvais. Malgré ces privilèges, vous devez toujours faire attention à la façon dont les quires sont construites. L'injection Sql et la "référence d'objet direct non sécurisée" sont toujours des problèmes auxquels vous êtes confrontés. – rook

Répondre

4

*.* signifie toutes les tables de toutes les bases de données.

Les failles dans la sécurité se produira plus dans le php que dans le msyql, voir cet article de Wikipedia pour les questions communes: SQL Injection.

GRANT USAGE signifie no privileges.

Questions connexes