SQL-инъекция не работает

Я проверял свои веб-страницы на наличие SQL-инъекций, когда главные страницы не отвечали на него, я создал тестовый скрипт:

<?
$a = $_POST["a"];
$username="...";
$password="...";
$database="...";

mysql_connect ('...',$username,$password);
mysql_select_db($database) or die( "Unable to select database");

$ress=mysql_query("SELECT username FROM userinfo WHERE id='$a'");
$row = mysql_fetch_array($ress);

print $row[0];
?>
<form name="form" action="hackMe.php" method="POST">
<input id="a" name="a" size="150">
<input name="Submit" type="submit" value="Submit">
</form>

Но когда я пытаюсь эту строку:

'; UPDATE userinfo SET email = '[email protected]' WHERE email = '[email protected]

Я просто получаю сообщение об ошибке, и нет изменений в базе данных.

Есть идеи почему?

0

Решение

котировка из руководства:

mysql_query () отправляет уникальный запрос (несколько запросов не поддерживаются) в текущую активную базу данных на сервере, который связан с указанным

Подсветка мной. mysql_query() разрешает только один запрос на вызов, второй запрос после ; игнорируется

Чтобы проверить SQL-инъекцию, вы должны использовать запрос, которому не нужен второй, чтобы причинить вред.

Редактировать:

Можно разрешить несколько запросов, но вы должны явно указать это в mysql_connect() вызов.

mysql_connect($host, $username, $password, false, 65536);
// defined by MySQL:
// #define CLIENT_MULTI_STATEMENTS 65536 /* Enable/disable multi-stmt support */
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]