SQL инъекция не работает - PullRequest
0 голосов
/ 28 марта 2012

Почему моя инъекция sql, которую я пытаюсь практиковать, не работает.

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

У меня есть поле ввода, в которое я положил следующее

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

и это заменяется кодом впрыска.

Однако sql не удается. Но когда я обрабатываю следующее утверждение в phpmyadmin, тогда оно работает.

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

Как это может быть? Мой браузер автоматически экранирует его для меня

Ответы [ 3 ]

8 голосов
/ 28 марта 2012

Ни один из интерфейсов PHP / MySQL не позволяет вам выполнять более одного оператора одновременно. Этот тип SQL-инъекции невозможен в PHP.

Когда вы выполняете его в phpMyAdmin, он разбивает вашу строку на отдельные запросы и выполняет их по одному.

Тип внедрения SQL, который возможен в PHP, выглядит так:

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

$query = "SELECT * FROM public_table WHERE `col` = '$dirtyString'";
1 голос
/ 28 марта 2012

Вы не можете сделать это из PHP, так как он не позволяет выполнять более одного оператора одновременно.Страница справочника mysql_query():

Строка запроса не должна заканчиваться точкой с запятой.

0 голосов
/ 28 марта 2012

Некоторые версии PHP автоматически экранируют все для вас магическими кавычками.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...