当前位置: 首页 > 面试题库 >

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

孟沛
2023-03-14
问题内容

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

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

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


问题答案:

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



 类似资料:
  • 我正在尝试使用query-更新行(删除列str_column中的连字符和连字符后的所有字符)- 但上面的查询是删除匹配的行而不是更新。 我不明白,如何更新查询可以删除行??

  • 我需要更新我的数据库,它是基于locationId的多行软删除 当我运行查询时,我得到一个错误: 错误代码:1175。您使用的是安全更新模式,并且您试图更新一个没有使用键列禁用安全模式的表,请在“首选项”中切换该选项- 正如我所知,子查询将返回两条记录,因为子查询返回两条记录更新不会发生,但我如何解决这个问题。我试图解决这个问题,但没有成功。

  • 问题内容: MySQL的新版本8.0现在支持 Common Table Expressions 。 根据手册: SELECT,UPDATE和DELETE语句的开头允许使用WITH子句: 因此,我认为,鉴于下表: 我可以使用以下查询: 为了从表中删除重复项,就像在 SQL Server中一样 。 原来我错了。当我尝试从MySQL Workbench 执行stament时出现错误: 错误代码:1146

  • 问题内容: 我在Spring和mongodb中使用了hibernate JPA,并且我在Glassfish-4.0上运行我的应用程序。 我的服务类别是: 我的spring-context.xml是: 我在代码中应用了一些更改,但是它们没有效果。谁能帮我解决这个问题。提前致谢。 问题答案: 我不确定这是否会帮助你解决问题(即是否仍然存在),但是,在网上搜索类似问题之后。 我从持久性EntityMan

  • 问题内容: 我正在使用Jesey在Java(JAX-RS)中实现Restful Web Service。我在Tomcat v7.0上运行它,我使用Hibernate将数据映射到数据库(MySQL)。我有一个查询来获取可交付成果的列表: 它给了我一百个可交付成果,但我想在Task表中拥有前三名。感谢您的帮助。如何修改查询? 请注意,这三个可交付成果不应重复。 与@FGreg答案存在冲突。当我使用这些

  • 问题内容: 我试图用PDO编写更新查询,但我无法执行代码? 问题答案: 您的语法错误 您可能打算更新一行而不是全部更新,因此您必须使用子句来定位特定行 更改 至