SQL注入攻击
当我们登陆一个系统的时候, 系统会提示我们首先输入用户名和密码, 然后在验证用户名和密码正确之后才会让我们进入主页。
此时数据库中的操作就应该是:
- 后台代码获取到我们输入的用户登录信息
- 将用户登陆信息组合成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表中插入一些数据用来测试
INSERT INTO userInfo(username, password)
VALUES ('zhangsan', '123456'),
('lisi', '000000');
- 此时我们输入一堆数据去
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';
第一种情况的输入如图:
第二种情况的输入如图:
第三种情况的输入如图:
用户名和全部不对的请款下我们查询出了所有的信息,这就是SQL语言逻辑上的漏洞。
第三种输入中存在一个
OR的关键字, 而且OR之后给出了一个true的值,此时相当于所有的条件全部失效,所以我们可以从数据库中得到全部的数据。

523

被折叠的 条评论
为什么被折叠?



