【问题标题】:SQL injection - force execute second query if first one failsSQL 注入 - 如果第一个查询失败,则强制执行第二个查询
【发布时间】: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的可能重复

标签: php mysql sql-injection execute


【解决方案1】:

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

【讨论】:

  • 这不是我的问题。
猜你喜欢
  • 2014-12-02
  • 1970-01-01
  • 2015-03-16
  • 1970-01-01
  • 2012-10-10
  • 2018-12-18
  • 2020-03-09
  • 1970-01-01
  • 2021-02-27
相关资源
最近更新 更多