2010-03-01 5 views
2

MySQL 페이지에서 보안 결함을 찾으려고합니다. 그것은 SQL에 대해 배우는 수업을위한 과제입니다. 텍스트 상자를 통해 데이터베이스에 액세스하여 쿼리를 제출하고 올바른 데이터 세트를 반환하는지 확인합니다. 그들이 할 수있는 악의적 인 것이 있는지 찾아보고 싶습니다.이 MySQL 페이지에서 보안 결함을 찾을 수 있습니까?

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' 

사람이 GRANT 문장의 의미를 설명 할 수 :

이는 SHOW GRANTS 쿼리의 결과인가? *.*GRANT USAGE은 무엇입니까? 이 사이트를 깰 수있는 다른 방법은 무엇입니까?

사이트 자체는 PHP로 작성되었습니다. 루크에 대응

, 나는 실행할 때 :

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

사용법이 제한되어 있으므로 모든 데이터베이스와 테이블을 수정할 수 있다고 생각되는 것으로 오인되었습니다. 이러한 특권에도 불구하고 당신은 여전히 ​​지주가 만들어지는 방법에주의해야합니다. SQL 주입 및 "안전하지 않은 직접 개체 참조"는 여전히 직면 한 문제입니다. – rook

답변

4

*.*은 모든 데이터베이스의 모든 테이블을 의미합니다.

보안상의 결함은 msyql보다 PHP에서 더 많이 발생합니다. 일반적인 문제에 대해서는 위키피디아 문서 SQL Injection을 참조하십시오.

GRANT USAGEno privileges을 의미합니다.

관련 문제