SQL注入实验

6 篇文章 4 订阅
5 篇文章 0 订阅

🛢️SQL注入实验

⭕实例代码,仅供测试⭕

环境准备

搭建数据库基本环境

create database myDB;		# 创建数据库
use myDB;		# 进入数据库
CREATE TABLE sqljection (
      id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
      username VARCHAR(64) UNIQUE NOT NULL,
      password VARCHAR(64) NOT NULL,
      email VARCHAR(64) NOT NULL)
      ENGINE=MyISAM AUTO_INCREMENT=917432  DEFAULT CHARSET=latin1;		# 创建表

创建注册用户页面

先进入网页的根目录

cd /var/www/html/

创建网页文件

vim zuche.php
<html>
<title>This is a SQLjection!</title>
<body>
<form action="" method="post">
    Username:<input type="text" name="username"/>
    Password:<input type="text" name="pswd"/>
    Email:<input type="text" name="email"/>
    <input type="submit" value="插入数据"/>
</form>
<?php
  $hostname="localhost";
  $username="root";
  $password="123456";
  $database="myDB";
 $conn=new mysqli($hostname,$username,$password,$database);
 $str1=ltrim($_POST['username']);
 $str2=md5(ltrim($_POST['pswd']));
 $str3=ltrim($_POST['email']);
 $sql="INSERT INTO sqljection(username,password,email) VALUES('$str1','$str2','$str3')";
 if(($str1<>NULL)&&($str2<>NULL))
   {
    $conn->query($sql);
   }
$conn->close();
?>
</body>
</html>

打开效果:

创建登录页面

vim login.html
<html>
<title>This is a login about sqljection</title>
<body>
  <form action="checklogin.php" method="post">
  <fieldset >
    <legend>Sql注入演示</legend>
    <table>
      <tr>
        <td>用户名:</td>
        <td><input type="text" name="username"></td>
      </tr>
     <tr>
        <td>密&nbsp;&nbsp;码:</td>
        <td><input type="text" name="password"></td>
      </tr>
      <tr>
        <td><input type="submit" value="提交"></td>
        <td><input type="reset" value="重置"></td>
      </tr>
    </table>
  </fieldset>
</form>
</body>
</html>
vim checklogin.php
<html>
<head>
<title>登录验证</title>
<meta http-equiv="content-type"content="text/html;charset=utf-8">
</head>
<body>
<?php
   $servername = "localhost";
   $username ="root";
   $password ="123456";
   $dbname = "myDB";
// 创建连接
   $conn = new mysqli($servername, $username, $password, $dbname);
   $name=$_POST["username"];
   $pwd=md5($_POST["password"]);
   $sql="select * from sqljection where username='$name' and password='$pwd'";
   $result = $conn->query($sql);
   if ($result->num_rows > 0) {
    // 输出数据
    while($row = $result->fetch_assoc()) {
      echo "<h2>";
       echo "id: " . $row["id"]. ", <br> username is: " . $row["username"]. ",  <br> password is: " . $row["password"].",  <br> email is: " . $row["email"]. "<br>";
    }
} else {
    echo "<h2>您的用户名或密码输入有误,<a href=\"login.html\">请重新登录!</a>";
}
$conn->close();
 ?>
</body>
</html>

打开效果:

手动插入实验数据

插入数据前数据库验证

开始创建两个可用于实验的数据

再次查看数据库

尝试正常登录检查

使用正常的账号密码进行登录测试

这样就说明环境搭建正常,开始进行实验

📌开始注入

打开登录页面开始注入非法字符

案例1

实现原理:直接恶意注释原代码里面的数据库查询语句中的查询密码这一项,导致密码验证直接失效实现无密码登录

[用户名]'#

这样就直接不需要密码就可以直接能够成功登录了。

案例2

实现原理:直接恶意更改数据库验证策略,导致后面代码块验证直接失效实现无密码验证登录

[用户名]'or1='1

这样就直接不需要密码就可以直接能够成功登录了。

案例3

实现原理:直接恶意更改数据库查询策略,导致后面代码块验证直接失效实现无密码验证登录

[用户名]'or'1

这样不但不需要密码就可以直接能够成功登录了而且还能查询到数据库中的所有数据

案例4

实现原理:直接恶意更改数据库查询策略,以及注释查询代码,直接显示数据库

'or 1=1#

这样不但不需要密码还可以不用正确的用户名就可以直接能够成功登录了而且还能查询到数据库中的所有数据

📣特别声明

原文地址:SQL注入 - 开摆工作室博客 (kbai.cc)

此文章全部都是依靠自己的学习理解来写的原创文章,难免可能会出现有错误的地方,

如果大家以后阅读的时候发现有问题,那就麻烦到下方评论区来进行错误指出,使错误尽快做出改正,

在此,感谢大家的阅读与支持!🤝💦🎉

🍻支持一下

觉得我写的好的话可以支持一下我哦~持续关注我,会更新其他好玩且实用的项目。

👋如果我能帮助到你,那就请我喝杯🧋呗~👇👇👇

我的博客链接:blog.kbai.cc

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开摆工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值