前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网络信息安全实训【SQL注入】

网络信息安全实训【SQL注入】

作者头像
MIKE笔记
发布2023-03-23 11:10:18
2900
发布2023-03-23 11:10:18
举报
文章被收录于专栏:MIKE笔记 技术教程

目录

前言

🥇个人主页:@MIKE笔记 🥈来自专栏:网络信息安全

一、学习目标:

🛢️SQL注入测试 ⭕实例代码,仅供测试⭕


二、环境准备

【1】搭建数据库基本环境

提示:这里可以添加要学的内容

代码语言:javascript
复制
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;		# 创建表

三、创建注册用户页面

【1】先进入网页的根目录

代码语言:javascript
复制
cd /var/www/html/

【2】创建网页文件

代码语言:javascript
复制
vim zuche.php
代码语言:javascript
复制
<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>

打开效果:

在这里插入图片描述
在这里插入图片描述

四、创建登录页面

代码语言:javascript
复制
vim login.html
代码语言:javascript
复制
<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>
代码语言:javascript
复制
vim checklogin.php
代码语言:javascript
复制
<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】开始创建两个可用于实验的数据

在这里插入图片描述
在这里插入图片描述

【3】再次查看数据库

在这里插入图片描述
在这里插入图片描述

【4】尝试正常登录检查

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

六、开始注入

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

案例1

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

代码语言:javascript
复制
[用户名]'#
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

案例2

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

代码语言:javascript
复制
[用户名]'or1='1
在这里插入图片描述
在这里插入图片描述

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

案例3

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

代码语言:javascript
复制
[用户名]'or'1
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

案例4

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

代码语言:javascript
复制
'or 1=1#
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

📣特别声明

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

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

🛢️SQL注入测试 ⭕实例代码,仅供测试⭕


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 前言
  • 一、学习目标:
  • 二、环境准备
  • 三、创建注册用户页面
  • 四、创建登录页面
  • 五、手动插入实验数据
  • 六、开始注入
    • 案例1
      • 案例2
        • 案例3
          • 案例4
          • 📣特别声明
          相关产品与服务
          数据库
          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档