gpt4 book ai didi

php - SQL注入(inject): mechanism

转载 作者:行者123 更新时间:2023-11-28 23:45:10 25 4
gpt4 key购买 nike

关于 SO 的许多答案都谈到了 SQL 注入(inject)和针对它的补救措施,这对我来说很清楚。他们中的大多数人没有触及(或者我可能不明白)的是恶意 SQL 实际上是如何注入(inject)到查询中的。

这是我的困惑。

假设一个例子:php + pdo(或mysqli)+ Mysql。代码:

$sql = "select SomeName from SomeTable where SomeNameId = $neededId";$pdoInstance->query($sql);

如果我理解正确,要将一些恶意代码附加到 $neededId 变量,攻击者需要知道 $neededId 变量的存在。但是要找出变量名,攻击者必须超越 php 解释器,我认为这并不容易。

有人可以澄清一下吗?

最佳答案

你是对的,攻击者可能必须猜测一个表的名称。例如:

$neededId = "0; DELETE FROM tblUser;"

select SomeName from SomeTable where SomeNameId = $neededId

如果这不起作用,请尝试下一个表名:tblCustomer、tblcontact 等。

你只是不希望那成为可能。

编辑:如果你正在构建一些著名的开源框架,人们甚至不必猜测表名,他们可以查找它们。

OP 问:“攻击者如何将 tblUser 中的 delete blah-blah 注入(inject)到 $neededId 变量中?”

这很容易。您的数据来自表格。一个 HTML 表单。你可以把任何东西放在帖子里。它不能被信任。

您可以通过构建自己的 HTML 表单来实现,或者在网页本身上使用它,例如: https://addons.mozilla.org/en-US/firefox/addon/tamper-data/

这是否回答了您的问题?

关于php - SQL注入(inject): mechanism,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33736692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com