SQL注入:机制

时间:2015-11-16 13:35:33

标签: php mysql pdo sql-injection

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

这是我的困惑。

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

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

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

有人可以澄清吗?

1 个答案:

答案 0 :(得分:1)

你是对的,攻击者必须猜猜桌子的名字。 例如:

$neededId = "0; DELETE FROM tblUser;"

select SomeName from SomeTable where SomeNameId = $neededId

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

你只是不希望这是可能的。

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

OP问道:“攻击者如何从tblUser中删除blah-blah到$ neededId变量?”

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

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

这会回答你的询问吗?

相关问题