SQL注入不起作用

时间:2015-01-06 12:53:57

标签: php mysql sql code-injection

我正在检查我的网页上的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 = 'steve@unixwiz.net' WHERE email = 'testusr@gmail.com

我刚收到错误,数据库没有变化。

任何想法为什么?

1 个答案:

答案 0 :(得分:1)

引用from the manual

  

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 */