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

*.*すべてのデータベースのすべてのテーブルを意味します。

セキュリティ上の欠陥は、msyql よりも php で多く発生します。一般的な問題については、ウィキペディアの記事SQL インジェクションを参照してください。

GRANT USAGE権限がないことを意味します。

于 2010-03-01T18:58:38.463 に答える