SQL-注入无效

SQL-Injection not working

你能告诉我为什么我的 SQL-Injection 不起作用吗?我该如何修复它。我试图遵循 Here 中的示例,但值'); DROP TABLE table;-- 或者密码 1=1 不起作用。很抱歉用这些简单的东西耽误了你的时间,但我试了很多次都没有成功 运行,另一个 post 也没有帮助我。

<!DOCTYPE html>
<html>
<head>
  <style>

body {background-color: #cc0000;}

  </style>
</head>
<body>

 <h2>Einlogen</h2>

<form action="EasyExploit.php" method="post">
  Vorname: <input type="text" name="vorname"><br>
<input type="submit">

 <h2>Registrieren</h2>

<form action="EasyExploit.php" method="post">
  Vorname: <input type="text" name="vorname"><br>
<input type="submit">

<?php

  $connection = mysqli_connect('localhost', 'root','' ,'DB') or die(mysqli_error());
                mysqli_select_db($connection ,'DB')or die(mysqli_error());
                @$unsafe_variable = $_POST['vorname'];
                mysqli_query($connection, "INSERT INTO `Persons` (`Vorname`) VALUES ('$unsafe_variable')");

?>

</body>
</html>

提前致谢

制作sql注入易受攻击的代码(用于测试目的):

为了使用您的代码测试 SQL 注入,我们需要进行一些更改:

<?php

  $connection = mysqli_connect('localhost', 'root','' ,'DB') or 
                die(mysqli_error($connection));  //1
  mysqli_select_db($connection ,'DB') or die(mysqli_error($connection)); //2
  $unsafe_variable = $_POST['vorname'];
  mysqli_multi_query($connection,    //3
               "INSERT INTO `Persons` (`Vorname`) VALUES ('$unsafe_variable')");

?>
  • //1//2mysqli_error 需要 $connection 参数。
  • //3:只有mysqli_multi_query可以一次执行多句。出于安全原因。 mysqli_query 只执行一个以防止 sql 注入。

测试:

是时候测试sql注入了。我们创建一个简单的 table t 来检查我们是否可以通过 sql 注入来删除它:

create table t ( i int );

攻击时间到了,要注入的杀手字符串 sql 是:

pepe'); DROP TABLE t;--

SQL with injected code:

"INSERT INTO Persons (Vorname) VALUES ('pepe'); DROP TABLE t;--')"

解释:

  • SQL 模式是:"INSERT INTO Persons (Vorname) VALUES ('$unsafe_variable')"
  • "pepe');" 替换 $unsafe_variable : "INSERT INTO Persons (Vorname) VALUES ('pepe'); DROP TABLE t;--')"
  • 记住--的意思是"comments from here",那么最后的引号和括号就是注释了。

post这个值形成后:

mysql> select * from t;
ERROR 1146 (42S02): Table 's.t' doesn't exist

如何避免SQL注入?

伙计,这是互联网,他们有很多关于它的论文。使用参数化查询开始搜索。