首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >注入不起作用

注入不起作用
EN

Stack Overflow用户
提问于 2017-12-30 12:31:00
回答 1查看 1.5K关注 0票数 0

请您告诉我为什么我的SQL注入不能工作,以及如何修复它。我尝试使用Here中的示例,但是值‘);DROP表;-或者密码1=1不工作。我很抱歉在这些简单的事情上浪费了你的时间,但是我试了很多次,但我没有让它运行,而另一个帖子对我没有帮助。

代码语言:javascript
复制
<!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>

预先感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-30 14:32:30

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

为了用代码测试SQL注入,我们需要做一些更改:

代码语言:javascript
复制
<?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注入的时候了。我们创建一个简单的表t来检查是否可以通过sql注入删除它:

代码语言:javascript
复制
create table t ( i int );

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

( pepe');放置表t;--

注入代码的SQL: “插入Person (Vorname)值('pepe');删除表t;--‘”

解释:

  • SQL模式是:"INSERT INTO Persons (Vorname) VALUES ('$unsafe_variable')"
  • pepe‘;”代替$unsafe_variable"INSERT INTO Persons (Vorname) VALUES ('pepe'); DROP TABLE t;--')"
  • 记住--的意思是“这里的注释”,最后的引号和括号是注释。

在发布此值后形成:

代码语言:javascript
复制
mysql> select * from t;
ERROR 1146 (42S02): Table 's.t' doesn't exist

如何避免SQL注入?

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48033975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档