启用魔术引用时的SQL注入

时间:2011-06-15 14:15:23

标签: php sql-injection magic-quotes

  

可能重复:
  Are single quotes escaped automatically in PHP? Then what's the need for cleaning?
  Successful SQL Injection despite PHP Magic Quotes

今天早些时候,我询问了关于引用的自动转义并了解了魔术报价。该主题位于Are single quotes escaped automatically in PHP? Then what's the need for cleaning?

我们达成共识,即魔术引用是不够的,我们应该始终验证和清理用户输入以及使用准备好的查询。

然而,这导致了这个问题,在一个神奇的引用启用服务器上什么样的sql注入会绕过魔术引号强加的安全措施?为什么魔法引用不安全?

为了让我相信魔术报价是不安全的,我希望看到一个真实世界的注射例子可以绕过这些措施。我已经在我的本地服务器上构建了一个测试设置代码:

$foo = $_POST['foo'];
$sql = "SELECT * FROM bar WHERE foo='".$foo."'";
$result = query($sql);

其中query()是执行查询所需的常用代码。什么都没有清洁。但是,启用了魔术引用。

任何可以在此设置中绕过魔术引号的注射示例?

干杯,

埃里克

1 个答案:

答案 0 :(得分:0)

问题是魔术引号使用PHP的addslashes()函数,它不能识别unicode(这意味着不会转义多字节字符)。

这应该是你需要的所有令人信服的。