当前位置: 首页 > news >正文

初步了解数据库,sql注入漏洞练习语句,搭建sql靶场

1.初步了解数据库

数据库是存储、组织和管理数据的系统,可以将其当成一个电子化的文件柜或图书馆,用于高效地存储、检索和管理大量信息。

1.核心概念:

结构化存储:数据以表格、文档等形式存放,而非随意堆放。

高效管理:通过数据库管理系统(DBMS,如MySQL、Oracle、MongoDB)实现数据的增删改查。

数据关联:支持建立数据间的关系(如订单与客户关联)

2.类型


关系型数据库 数据以表格形式存储,通过SQL操作,强调数据一致性(如MySQL、PostgreSQL) 银行交易、企业管理系统
非关系型数据库 灵活存储文档、键值对等,适合海量非结构化数据(如MongoDB、Redis) 社交网络、物联网数据
时序数据库 专为时间序列数据优化(如InfluxDB) 监控系统、传感器数据

3.为什么需要数据库

替代文件存储:避免手动处理Excel或文本文件的繁琐与错误。

处理大规模数据:支持百万级数据的高效查询。

保证数据完整性:如禁止重复学号等规则。

支持复杂应用:电商、社交平台等都依赖数据库后台。

2.初步了解sql注入漏洞

SQL注入是一种通过恶意SQL代码操纵后端数据库的攻击方式,是Web安全中最常见且危险的漏洞之一。

1.攻击原理

核心问题:将用户输入直接拼接到SQL查询中,未进行过滤或转义。

如登录账号,攻击者不需要密码即可登录

2.攻击类型


经典注入 通过单引号闭合语句 ' OR '1'='1
联合查询注入 使用 UNION 获取其他表数据 ' UNION SELECT username, password FROM users --
盲注 无显式错误,通过页面差异判断 ' AND 1=1 -- (正常) vs ' AND 1=2 -- (异常)
时间盲注 通过延时判断条件真假 ' AND IF(1=1, SLEEP(5), 0) --
堆叠查询 执行多条SQL语句(如MySQL) '; DROP TABLE users; --
二阶注入 数据先被存储,后触发 注册用户名 admin'-- ,后续操作时触发

3.练习sql语句

1.安装navicat

通过此教程进行下载

Navicat Premium 16 保姆级手把手 安装教程包含下载、安装、授权(附安装包)-CSDN博客

2.练习

点击连接打开mysql

这里采用某一练习进行练手,将以下全部复制

-- 创建数据库(如果不存在)

CREATE DATABASE IF NOT EXISTS student_grade_db;

USE student_grade_db;

-- 创建课程表(5门课,覆盖常见科目)

CREATE TABLE courses (

id INT AUTO_INCREMENT PRIMARY KEY,

course_name VARCHAR(50) NOT NULL

);

-- 创建学生表(30个真实感名字+班级+年龄)

CREATE TABLE students (

id INT AUTO_INCREMENT PRIMARY KEY,

name VARCHAR(50) NOT NULL,

age INT NOT NULL,

gender VARCHAR(10) NOT NULL,

class VARCHAR(20) NOT NULL

);

-- 创建成绩表(关联学生和课程,150条数据)

CREATE TABLE scores (

id INT AUTO_INCREMENT PRIMARY KEY,

student_id INT NOT NULL,

course_id INT NOT NULL,

score DECIMAL(5,2) NOT NULL,

FOREIGN KEY (student_id) REFERENCES students(id),

FOREIGN KEY (course_id) REFERENCES courses(id)

);

-- 插入课程数据(5门课,基础科目全齐)

INSERT INTO courses (course_name) VALUES

('Mathematics'),

('Chinese'),

('English'),

('Physics'),

('Chemistry');

-- 插入30个学生数据(名字/年龄/性别/班级随机分配,真实不塑料!)

INSERT INTO students (name, age, gender, class) VALUES

('张明', 19, 'Male', 'Computer Science 1'),

('李华', 20, 'Female', 'Computer Science 2'),

('王芳', 18, 'Female', 'IT Engineering 1'),

('刘伟', 21, 'Male', 'Computer Science 1'),

('陈静', 19, 'Female', 'IT Engineering 2'),

('杨洋', 20, 'Male', 'Computer Science 2'),

('黄丽', 19, 'Female', 'Computer Science 1'),

('周强', 22, 'Male', 'IT Engineering 1'),

('吴敏', 20, 'Female', 'Computer Science 2'),

('徐娜', 18, 'Female', 'IT Engineering 2'),

('孙浩', 20, 'Male', 'Computer Science 1'),

('马超', 21, 'Male', 'Computer Science 2'),

('朱婷', 19, 'Female', 'IT Engineering 1'),

('胡杰', 20, 'Male', 'IT Engineering 2'),

('林雪', 18, 'Female', 'Computer Science 1'),

('何亮', 22, 'Male', 'Computer Science 2'),

('高峰', 19, 'Male', 'IT Engineering 1'),

('郭静', 20, 'Female', 'IT Engineering 2'),

('韩梅', 19, 'Female', 'Computer Science 1'),

('谢敏', 20, 'Female', 'Computer Science 2'),

('邓伟', 21, 'Male', 'IT Engineering 1'),

('冯丽', 18, 'Female', 'IT Engineering 2'),

('曾强', 20, 'Male', 'Computer Science 1'),

('彭华', 19, 'Female', 'Computer Science 2'),

('颜强', 21, 'Male', 'IT Engineering 1'),

('潘丽', 20, 'Female', 'IT Engineering 2'),

('杜明', 22, 'Male', 'Computer Science 1'),

('丁芳', 19, 'Female', 'Computer Science 2'),

('董强', 20, 'Male', 'IT Engineering 1'),

('赵敏', 21, 'Female', 'IT Engineering 2');

-- 插入150条成绩数据(每学生5门课,分数有高有低,真实到能编故事!)

-- 重点:覆盖增删改查所有场景(比如查“物理不及格的”、按分数排序等)

INSERT INTO scores (student_id, course_id, score) VALUES

(1,1,85.5), (1,2,90.0), (1,3,78.5), (1,4,82.0), (1,5,88.5), -- 张明(学霸型)

(2,1,76.0), (2,2,85.0), (2,3,82.0), (2,4,79.5), (2,5,81.0), -- 李华(中等偏上)

(3,1,65.0), (3,2,70.0), (3,3,68.0), (3,4,62.0), (3,5,67.0), -- 王芳(挂科预警!)

(4,1,92.0), (4,2,88.0), (4,3,85.0), (4,4,90.0), (4,5,89.0), -- 刘伟(卷王)

(5,1,72.5), (5,2,75.0), (5,3,78.0), (5,4,74.5), (5,5,76.0), -- 陈静(稳如老狗)

(6,1,80.0), (6,2,84.0), (6,3,83.0), (6,4,81.0), (6,5,82.5), -- 杨洋(进步中)

(7,1,77.5), (7,2,81.0), (7,3,79.5), (7,4,76.0), (7,5,78.5), -- 黄丽(小透明)

(8,1,88.0), (8,2,92.0), (8,3,89.0), (8,4,91.0), (8,5,90.0), -- 周强(大佬)

(9,1,74.0), (9,2,78.0), (9,3,76.5), (9,4,73.0), (9,5,75.0), -- 吴敏(努力型)

(10,1,68.0), (10,2,72.0), (10,3,70.0), (10,4,65.0), (10,5,69.0), -- 徐娜(差点挂科)

(11,1,83.0), (11,2,86.0), (11,3,84.0), (11,4,82.0), (11,5,85.0), -- 孙浩(中上)

(12,1,79.0), (12,2,82.0), (12,3,80.0), (12,4,78.5), (12,5,81.0), -- 马超(稳)

(13,1,71.5), (13,2,74.0), (13,3,72.5), (13,4,70.0), (13,5,73.0), -- 朱婷(小进步)

(14,1,81.0), (14,2,83.0), (14,3,82.5), (14,4,80.0), (14,5,84.0), -- 胡杰(卷中卷)

(15,1,69.5), (15,2,73.0), (15,3,71.0), (15,4,67.5), (15,5,70.5), -- 林雪(差点挂科)

(16,1,90.0), (16,2,93.0), (16,3,91.0), (16,4,92.0), (16,5,94.0), -- 何亮(天花板)

(17,1,75.0), (17,2,77.0), (17,3,76.0), (17,4,74.0), (17,5,78.0), -- 高峰(中等)

(18,1,82.0), (18,2,85.0), (18,3,83.0), (18,4,81.5), (18,5,84.5), -- 郭静(优秀)

(19,1,78.0), (19,2,80.0), (19,3,79.0), (19,4,77.0), (19,5,81.0), -- 韩梅(小能手)

(20,1,84.5), (20,2,87.0), (20,3,86.0), (20,4,85.0), (20,5,88.0), -- 谢敏(学霸)

(21,1,67.0), (21,2,71.0), (21,3,69.0), (21,4,65.0), (21,5,68.0), -- 邓伟(危险边缘)

(22,1,73.0), (22,2,76.0), (22,3,74.0), (22,4,72.0), (22,5,75.0), -- 冯丽(稳)

(23,1,86.0), (23,2,89.0), (23,3,87.0), (23,4,85.0), (23,5,88.0), -- 曾强(卷王)

(24,1,77.5), (24,2,80.0), (24,3,78.5), (24,4,76.5), (24,5,79.5), -- 彭华(中等偏上)

(25,1,89.0), (25,2,91.0), (25,3,88.5), (25,4,90.0), (25,5,92.0), -- 颜强(大佬)

(26,1,74.5), (26,2,77.5), (26,3,75.0), (26,4,73.5), (26,5,76.5), -- 潘丽(小进步)

(27,1,92.5), (27,2,95.0), (27,3,93.0), (27,4,94.0), (27,5,96.0), -- 杜明(天花板2号)

(28,1,80.5), (28,2,83.5), (28,3,82.0), (28,4,81.0), (28,5,84.0), -- 丁芳(优秀)

(29,1,76.0), (29,2,79.0), (29,3,77.5), (29,4,75.0), (29,5,78.0), -- 董强(中等)

(30,1,83.0), (30,2,86.0), (30,3,84.5), (30,4,82.5), (30,5,85.5); -- 赵敏(稳如老狗)

新建连接后右击点击新建查询,点击运行。

1.比如查询19岁的姓名

输入SELECT name FROM students WHERE age = 19;结果如图

2.查出班级是"Computer Science 1"的学生姓名。

SELECT name FROM students WHERE class = 'Computer Science 1';

3.按年龄从小到大排,只看前3名

SELECT name, age FROM students ORDER BY age ASC LIMIT 3;

4.以李开头

SELECT name FROM students WHERE name LIKE '李%';

5.查出女生且年龄小于20岁的学生姓名

SELECT name FROM students WHERE gender = 'Female' AND age < 20;

6.查出英语成绩(course_id=3)高于90分的学生姓名。

SELECT s.name

FROM students s

JOIN scores sc ON s.id = sc.student_id

WHERE sc.course_id = 3 AND sc.score > 90;

PS:靶场在我最早的文章中有教程大家可以看一看

http://www.cnnetsun.cn/news/40657.html

相关文章:

  • 风储调频在Matlab/Simulink中的探索:基于四机两区系统的实践
  • 基于Java Swing的猜数字小游戏(2)
  • 提升 Web 端 JavaScript 的可信度:WAICT 体系详解
  • Solon (可替换 SpringBoot)集成 Docker 实战:30分钟搞定轻量级应用容器化部署
  • 一次 React 项目 lock 文件冲突修复:从 Hook 报错到 Vite 配置优化
  • 记录一次USB虚拟网络问题排查
  • 学Simulink——基于高比例可再生能源渗透的复杂电网建模场景实例:大规模光伏并网对区域电网频率稳定影响研究
  • CANN Samples(十九):特色场景:机器人 AI 绘画 手写识别等
  • 毕设开源 深度学习YOLO交通路面缺陷检测系统(源码+论文)
  • 【URP】Unity[后处理]色彩调整ColorAdjustments
  • Flutter混合开发与WebView集成实战
  • 压缩空气储能和释能阶段模型,附相关文档文献。 建立了压缩空气储能系统中的压缩机、换热器、储气罐...
  • Profinet转Modbus TCP工业数据采集网关:实现1200PLC 与打标卡数据实时传输
  • Flutter 2025 国际化与本地化实战:从多语言支持到文化适配,打造真正全球化的用户体验
  • P1178 到天宫做客 题解
  • 2025年GEO优化机会与争议以及规范发展的必要性
  • 2026老年春晚怀化区域节目征集启动仪式在怀化学院举行
  • 【笔记篇】【硬件基础篇】电力电子元器件应用手册 阅读笔记(1)电阻器及其应用
  • 柠檬 软件测试之python全栈自动化测试工程师第25期
  • 为什么你的视觉AI项目总是耗时又低效?Florence-2-large-ft一站式解决方案
  • 基于php的微信小程序的学习交流平台系统(源码+lw+部署文档+讲解等)
  • springboot高校读书分享系统的设计与实现_34ur7fyk-
  • 如何快速解锁RouterOS无限权限:MikroTikPatch的终极指南
  • 测试工程师的增值型职业休假策略:从技术深耕到跨界突破
  • USART串口
  • SDET职业生涯中的关键决策点与路径选择
  • 第三方API密集型聚合服务的测试体系构建
  • System Informer:你的Windows系统管家,3大核心功能深度解析
  • 探索城市脉搏:解密共享单车数据背后的故事
  • 如何用abogen构建高质量有声书生成系统:从单文件到批量处理的完整指南