php - FROM 语句后选择更多的表?

标签 php sql mysql

这是安全试听的一部分,因此无法“更改”查询。

基本上,我发现的是一个允许语句操作的缺陷,所以基本上它是这样的:

$query = "DELETE FROM `products` WHERE `products`.`whatever` = $variable";

这是 PHP,据我所知,无法执行多个查询。使用此 SQL 注入(inject),我能够通过运行“0 OR 1=1#”来“清除”此表。

这工作得很好,但它不允许我选择更多要从中删除的表。

这就是我想要做的伪代码:

DELETE FROM `products` WHERE `products`.`whatever` = **0 OR 1=1, FROM `othertable` WHERE `othertable`.`othercolumn` = 0 OR 1=1**

无论如何,这是合理的吗?

如果这不可靠,我还有其他方法可以使用它吗?

最佳答案

同一个 DELETE 语句不能有多个 FROM 子句,因此您不能完全按照自己的意愿去做。如果 MySQL 数据库打开了“允许每个语句进行多个查询”,您可以尝试终止一个 DELETE 查询,然后将另一个添加到最后,这样它看起来像这样:

DELETE FROM `products` WHERE `products`.`whatever` = **0 OR 1=1; DELETE FROM `othertable` WHERE `othertable`.`othercolumn` = 0 OR 1=1**

但仅此而已。

关于php - FROM 语句后选择更多的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1370851/

相关文章:

php - 使用 PHP 获取 DOM 元素

sql根据特定列选择唯一行

php - 如果不存在则创建表 - 意外的 T_STRING

MySQL 自动使用一个唯一的列对表进行排序。这是在哪里记录的?

用于查找 Web 服务器名称的 PHP 脚本

php - laravel 中的 mysql 查询突然不起作用

php - 数据库未在 html 表中更新

java - Apache Derby # 符号上出现词法错误?

php - 2 查询和分页

php - 获取最后一小时插入的最后一项