SQL注入攻击

SQL注入攻击

当我们登陆一个系统的时候, 系统会提示我们首先输入用户名和密码, 然后在验证用户名和密码正确之后才会让我们进入主页。

此时数据库中的操作就应该是:

  1. 后台代码获取到我们输入的用户登录信息
  2. 将用户登陆信息组合成SQL语句
SELECT * FROM userInfo WHERE username=XXX AND password=XXX;

3.数据库执行此语句, 如果查询到数据则允许登陆, 否则不允许登陆。

实验一:
1. 首先创建一个简单的用户信息表
























columnName

dataType

constraint

uid

INT

PRIMARY KEY | AUTO_INCREMENT

username

VARCHAR(20)

NOT NULL

password

VARCHAR(200)

NOT NULL

CREATE TABLE userInfo(uid INT PRIMARY KEY AUTO_INCREMENT, 
    username VARCHAR(20) NOT NULL,
    password VARCHAR(200) NOT NULL);

userInfo

  1. 向userInfo表中插入一些数据用来测试
INSERT INTO userInfo(username, password)
 VALUES ('zhangsan', '123456'), 
        ('lisi', '000000');

insertValue

  1. 此时我们输入一堆数据去select数据库中的数据看看会怎么样
/*1. 输入数据库中存在的数据*/
SELECT * FROM userInfo WHERE username='zhangsan' AND password='123456';
/*2. 输入数据库中不存在的数据*/
SELECT * FROM userInfo WHERE username='66666' AND password='9999';
/*3. 使用SQL注入去输入数据库中不存在的数据*/
SELECT * FROM userInfo WHERE username='00000' AND password='111' OR '1=1';

第一种情况的输入如图:
first

第二种情况的输入如图:
Second

第三种情况的输入如图:
third

用户名和全部不对的请款下我们查询出了所有的信息,这就是SQL语言逻辑上的漏洞。

第三种输入中存在一个OR的关键字, 而且OR之后给出了一个true的值,此时相当于所有的条件全部失效,所以我们可以从数据库中得到全部的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值