为什么我的sql注入我试图练习不工作。
$sql = "INSERT INTO animals VALUES ('', '{$string}', 'rover')";
我有一个输入框,其中我放了以下
', ''); drop table dropme; --
并且它被替换为注入代码。
但是sql失败了。但是当我在phpmyadmin中处理以下语句时,它确实有效。
INSERT INTO animals VALUES ('',' ', ''); drop table dropme; -- ','rover')";
这怎么可能?我的浏览器是否会自动为我转发
答案 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)