我有一个简单的问题:假设有一个查询如下的站点:
SELECT id, name, message FROM messages WHERE id = $_GET['q']。
SELECT id, name, message FROM messages WHERE id = $_GET['q']
有什么办法可以在数据库(MySQL)中更新/删除某些内容?到现在为止,我还从未见过能够使用 SELECT查询 删除/更新的注入,所以,甚至有可能吗?
如果您说使用mysql_query了不支持多个查询的内容,则不能直接添加DELETE/ UPDATE/ INSERT,但是在某些情况下可以修改数据。例如,假设您具有以下功能
mysql_query
DELETE
UPDATE
INSERT
DELIMITER // CREATE DEFINER=`root`@`localhost` FUNCTION `testP`() RETURNS int(11) LANGUAGE SQL NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY DEFINER COMMENT '' BEGIN DELETE FROM test2; return 1; END //
现在您可以在SELECT以下位置调用此函数: SELECT id, name, message FROM messages WHERE id = NULL OR testP() (id = NULL--始终为NULL(FALSE),因此始终执行testP()。
SELECT
SELECT id, name, message FROM messages WHERE id = NULL OR testP()
id = NULL