2

我正在尝试在 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

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

4

1 回答 1

4

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

安全漏洞在 php 中比在 msyql 中发生的更多,请参阅此 Wikipedia 文章以了解常见问题:SQL 注入

GRANT USAGE意味着没有特权

于 2010-03-01T18:58:38.463 回答