sql注入无法正常工作

时间:2012-03-28 13:55:51

标签: php sql sql-injection

为什么我的sql注入我试图练习不工作。

$sql = "INSERT INTO animals VALUES ('', '{$string}', 'rover')";

我有一个输入框,其中我放了以下

', ''); drop table dropme; --  

并且它被替换为注入代码。

但是sql失败了。但是当我在phpmyadmin中处理以下语句时,它确实有效。

INSERT INTO animals VALUES ('','    ', ''); drop table dropme; --   ','rover')";

这怎么可能?我的浏览器是否会自动为我转发

3 个答案:

答案 0 :(得分:8)

所有PHP / MySQL接口都不允许您一次执行多个语句。这种类型的SQL注入在PHP中是不可能的。

当您在phpMyAdmin中执行它时,它会将您的字符串拆分为单独的查询并一次执行一个。

PHP中可能的SQL注入类型是这样的:

$dirtyString = "' OR 1 = 1 UNION ALL SELECT * FROM private_table WHERE '1' = '1";

$query = "SELECT * FROM public_table WHERE `col` = '$dirtyString'";

答案 1 :(得分:1)

您无法通过PHP执行此操作,因为它不允许一次执行多个语句。 mysql_query()手册页说明:

  

查询字符串不应以分号结尾。

答案 2 :(得分:0)

某些版本的PHP会使用魔术引号自动转义所有内容。

http://php.net/manual/en/security.magicquotes.what.php