SQL 注射不起作用
SQL Injection don't work
我正在检查我的网页是否存在 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
我只是得到一个错误,数据库中没有任何变化。
知道为什么吗?
mysql_query() sends a unique query (multiple queries are not supported) to the currently active database on the server that's associated with the specified
由我突出显示。 mysql_query()
每次调用只允许单个query查询,;
后面的第二个query被忽略。
要测试 SQL 注入,您必须使用不需要第二个查询来造成伤害的查询。
编辑:
可以允许多个查询,但您必须在 mysql_connect()
调用中明确说明这一点。
mysql_connect($host, $username, $password, false, 65536);
// defined by MySQL:
// #define CLIENT_MULTI_STATEMENTS 65536 /* Enable/disable multi-stmt support */
我正在检查我的网页是否存在 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
我只是得到一个错误,数据库中没有任何变化。
知道为什么吗?
mysql_query() sends a unique query (multiple queries are not supported) to the currently active database on the server that's associated with the specified
由我突出显示。 mysql_query()
每次调用只允许单个query查询,;
后面的第二个query被忽略。
要测试 SQL 注入,您必须使用不需要第二个查询来造成伤害的查询。
编辑:
可以允许多个查询,但您必须在 mysql_connect()
调用中明确说明这一点。
mysql_connect($host, $username, $password, false, 65536);
// defined by MySQL:
// #define CLIENT_MULTI_STATEMENTS 65536 /* Enable/disable multi-stmt support */