所以我试图设计一个非常简单易受攻击的网站来演示SQL注入的工作方式,但是当我尝试注入时
');SELECT * FROM users;--
我收到一条错误消息:
错误:您的SQL语法出错;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在第1行'SELECT * FROM users; - ')'附近
源代码如下:
welcome1.html:
<form action="test.php" method="get">
<div><label for="firstname">First name:
<input type="text" name="firstname" id="firstname"/></label>
</div>
<div><label for="lastname">Last name:
<input type="text" name="lastname" id="lastname"/></label></div>
<div><label for="email">E-mail :
<input type="text" name="email" id="email"/></label></div>
<div><label for="password">password:
<input type="text" name="password" id="password"/></label></div>
<div><input type="submit" value="GO"/></div>
</form>
test.php的:
<html>
<body>
<?php
$con = @mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect ' . mysql_error());
}
mysql_select_db("accounts", $con);
$firstname = $_GET['firstname'];
$lastname = $_GET['lastname'];
$email = $_GET['email'];
$password = $_GET['password'];
$sql="INSERT INTO users(firstname, lastname, email, password)
VALUES
('$firstname','$lastname','$email','$password')";
if(!mysql_query("INSERT INTO users(firstname, lastname, email, password) VALUES ('$firstname','$lastname','$email','$password')"))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con)
?>
</body>
</html>
在win10上运行WAMP服务器3.0.6 如果不明显的话,我就是html / php的菜鸟 感谢
答案 0 :(得分:1)
您尝试的SQL注入类型不适用于mysql_query()
API。该API不支持多查询,因此您无法在一次mysql_query()
调用中执行两个语句。 SQL在分号(;
)后包含任何内容时出现语法错误。
它适用于mysqli_multi_query()。另请参阅http://php.net/manual/en/mysqli.quickstart.multiple-statement.php
同样使用PDO,IIRC在PDO::query()中默认支持多查询。