帮助找到这个MySQL页面中的安全漏洞?

时间:2010-03-01 18:57:31

标签: php mysql mysql-error-1142

我试图在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

正如我所想,用户似乎缺乏执行此操作所需的权限。或者我误解了什么?

1 个答案:

答案 0 :(得分:4)

*.*表示所有数据库上的所有表。

安全性的缺陷将在php中发生,而不是在msyql中,请参阅Wikipedia上有关常见问题的文章:SQL Injection

GRANT USAGE表示no privileges