SQL 在本地主机上注入无效

SQL injection on localhost not working

所以我正在尝试设计一个非常简单且易受攻击的网站来演示 SQL 注入的工作原理,但是当我尝试使用

进行注入时
');SELECT * FROM users;--

我收到一条错误消息:

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT * FROM users;--')' at line 1

源代码如下:

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>

运行 WAMP server 3.0.6 on win10 如果不是很明显,我就是 html/php 的菜鸟 谢谢

您尝试的 SQL 注入方式不适用于 mysql_query() API。 API 不支持多查询,因此您不能在对 mysql_query() 的一次调用中执行两个语句。 SQL 在分号 (;) 之后包含任何内容是语法错误。

它将与 mysqli_multi_query(). See also http://php.net/manual/en/mysqli.quickstart.multiple-statement.php

一起使用

还有 PDO,IIRC 在 PDO::query() 中默认支持多查询。