【发布时间】: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 注入工作,您必须有一个有效的工作查询来攻击..
标签: php mysql sql-injection execute