我试图在MySQL页面中找到安全漏洞。它是一个学习SQL的类的作业。通过文本框,他们将被授予访问数据库的权限,以提交查询并查看它是否返回正确的数据集。我想知道他们能做些什么恶意。
这是SHOW GRANTS
查询的结果:
Grants for user@localhost
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'
有人可以解释这些GRANT
语句的含义吗?什么是*.*
和GRANT USAGE
?我还能对这个网站做些什么来打破它?
网站本身是用PHP编写的。
在回应The Rook时,我执行:
UPDATE mysql.user set Password = password("hacked");
FLUSH PRIVILEGES;
我回来了:
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
正如我所想,用户似乎缺乏执行此操作所需的权限。或者我误解了什么?
答案 0 :(得分:4)
*.*
表示所有数据库上的所有表。
安全性的缺陷将在php中发生,而不是在msyql中,请参阅Wikipedia上有关常见问题的文章:SQL Injection。
GRANT USAGE
表示no privileges。