一尘不染

MySQL注入-使用SELECT查询进行更新/删除

mysql

我有一个简单的问题:假设有一个查询如下的站点:

SELECT id, name, message FROM messages WHERE id = $_GET['q']

有什么办法可以在数据库(MySQL)中更新/删除某些内容?到现在为止,我还从未见过能够使用 SELECT查询 删除/更新的注入,所以,甚至有可能吗?


阅读 325

收藏
2020-05-17

共1个答案

一尘不染

如果您说使用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()。

2020-05-17