localhost上的SQL注入不起作用

时间:2017-09-09 18:30:00

标签: php mysql sql-injection code-injection

所以我试图设计一个非常简单易受攻击的网站来演示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的菜鸟 感谢

1 个答案:

答案 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()中默认支持多查询。