SQL 注入 - 如果第一个查询失败,则强制执行第二个查询

Posted

技术标签:

【中文标题】SQL 注入 - 如果第一个查询失败,则强制执行第二个查询【英文标题】:SQL injection - force execute second query if first one fails 【发布时间】:2020-01-24 10:08:40 【问题描述】:
$query = 'SELECT EX1 AS date,rate FROM rates WHERE 
PARAM1="' . $param1 . '" and param2="' . $param2 . '" ORDER BY date DESC LIMIT 1';

$param1 易受 SQLI 攻击 - 但有一个问题: 查询失败,因为 rates 不存在 - 是否可以注入另一个查询,例如: DROP TABLE `users ,查询后——即使第一次执行失败?

【问题讨论】:

这会是现实生活中的场景吗?你会尝试为一个不存在的表执行 SQL 吗? 是的。见:netsparker.com/blog/web-security/sql-injection-cheat-sheet你能给我们更多的信息,你想解决什么问题?使用准备好的语句。 "for ex: DROP TABLE `users , 在查询之后 - 即使第一个执行失败?" 很可能没有... @freeek php mysql 客户端没有支持分号分隔的多条SQL语句..有一个异常->mysqli_multi_query() "$query = 'SELECT EX1 AS date,rate FROM rates WHERE PARAM1="' . $param1 。 '" 和 param2="' 。 $param2 。 '" ORDER BY date DESC LIMIT 1';$param1 易受 SQLI 攻击 - 但有一个问题:查询失败,因为费率不存在 -" ... 要使 SQL 注入工作,您必须有一个有效的工作查询来攻击.. MariaDb SQL Injection的可能重复 【参考方案1】:

您应该使用 PDO 或 mysqli 来绑定参数。请查看说明PDO 或 mysqli

【讨论】:

这不是我的问题。

以上是关于SQL 注入 - 如果第一个查询失败,则强制执行第二个查询的主要内容,如果未能解决你的问题,请参考以下文章

sql注入第四关

sql注入攻击与防御第二版读书笔记二——SQL盲注利用

如果插入查询执行完成,则更改表名

尝试在短时间内连续第二次运行 SQL 查询时 Java 挂起

MySQL第43天------视图SQL注入问题事务存储过程

循环通过api请求时插入失败只执行第一个查询