目录一、MySQL 核心常识1. 关系型 vs 非关系型数据库2. MySQL 四层服务端架构3. MySQL 默认三库4. MySQL 注释符二、SQL 语言分类与必备命令1. SQL 语言的四大分类2. 命令行下的必背常识命令三、核心查询SQL注入底层逻辑1. 基础单表查询语法2. UNION 联合查询3. 多表关联查询JOINS4. SELECT 子查询5. SELECT 七大子句的严格编写顺序6.SQL语句执行顺序口诀四、Web 安全联动与硬核加固1. 会话控制技术Cookie 与 Session2. 数据库安全加固三板斧一、MySQL 核心常识1. 关系型 vs 非关系型数据库关系型数据库RDBMS如MySQL、SQL Server、Oracle采用二维表格模型类似于 Excel使用标准的SQL 语言进行存取强调结构化数据和数据之间的一致性非关系型数据库NoSQL如Redis、MongoDB基于键值对Key-Value存储通常运行在内存中侧重于高并发、高速缓存场景2. MySQL 四层服务端架构理解其层级结构是编写查询语句和进行权限管理的基础[最外层] 数据库管理系统 (DBMS) → 管理整个服务器 [第二层] 数据库 (Database) → 存放数据的仓库可有多个 [第三层] 二维数据表 (Table) → 存放具体实体数据的表格 [第四层] 字段/列 (Field/Column) → 实际存储的单元3. MySQL 默认三库在执行SQL 注入SQLi漏洞利用时必须要利用到 MySQL 的系统库进行情报收集系统默认库名核心考点它存了什么渗透测试利用点information_schema包含整个数据库的架构信息所有库名、表名、列名、数据类型等SQL 注入的核心靶场。通过查询该库的SCHEMATA、TABLES、COLUMNS表可以把整个数据库的数据结构“脱”出来mysql存放 MySQL 服务器的用户账号、密码 hash 值、全局访问权限提权、撞库、检查是否存在弱口令默认管理员为rootperformance_schema收集服务器的性能参数、锁信息和调用资源偏向运维监控渗透中较少作为直接突破口4. MySQL 注释符网安点拨注释符在 SQL 注入中至关重要用来闭合后端原有的 SQL 语句使黑客拼接的恶意 Payload 成功执行单行注释 1#MySQL 特有注释符单行注释 2--双连字符 空格注意最后的空格必须有否则报错多行注释/* 注释内容 */常用于 SQL 注入中的/*闭合及 WAF 绕过二、SQL 语言分类与必备命令1. SQL 语言的四大分类DDLData Definition Language -- 数据定义语言改结构CREATE创建ALTER修改DROP删除DMLData Manipulation Language -- 数据操纵语言改数据INSERT增UPDATE改DELETE删DQLData Query Language -- 数据查询语言读数据SELECT网安重灾区SQL注入皆源于此DCLData Control Language--数据控制语言管权限GRANT赋权REVOKE撤权2. 命令行下的必背常识命令show databases; -- 查看当前服务器上的所有数据库 use 数据库名; -- 切换并进入某个数据库 select database(); -- 查看当前正在使用的是哪个数据库 show tables; -- 查看当前数据库中的所有表 desc 表名; -- 查看某个表的详细结构有哪些字段和类型三、核心查询SQL注入底层逻辑1. 基础单表查询语法SELECT 列名 FROM 表名 WHERE 条件; -- 标准条件查询模糊查询 (LIKE)%匹配零个或多个字符_仅匹配单个字符示例SELECT * FROM users WHERE username LIKE %admin%;查询包含 admin字符串的用户限制与分页 (LIMIT)LIMIT 起始位置, 条数;起始位置从 0 开始计数示例SELECT * FROM student LIMIT 0, 5;获取前 5 条记录2. UNION 联合查询网安点拨这是UNION 注入的理论根基。通过将恶意查询拼接到正常查询的后面直接在网页上回显敏感信息SELECT name, age FROM users UNION SELECT username, password FROM admin;UNION的两大死铁律不满足则直接报错合并的多个SELECT语句列数必须完全相同对应列的数据类型必须兼容如都是字符串或都是数字(注UNION会自动去重若不想去重则使用UNION ALL)3. 多表关联查询JOINS在复杂的 Web 应用中数据往往分散在多张表如用户表、订单表、商品表隐式内连接网安常见SELECT * FROM 表1, 表2 WHERE 表1.id 表2.uid;左外连接 (LEFT JOIN)以左表为基准左表数据全显示右表无对应则显示NULL右外连接 (RIGHT JOIN)以右表为基准右表数据全显示左表无对应则显示NULL4. SELECT 子查询子查询就是“查询里套查询”内层查询的结果作为外层查询的条件IN子查询结果为多行单列SELECT * FROM scores WHERE student_id IN (SELECT id FROM students WHERE chinese 100);EXISTS型子查询判断内层查询是否有结果返回。如果有True外层才执行SELECT * FROM t_department WHERE EXISTS (SELECT * FROM t_employee WHERE did IS NULL);5. SELECT 七大子句的严格编写顺序SELECT→FROM→JOIN ... ON→WHERE→GROUP BY→HAVING→ORDER BY→LIMIT6.SQL语句执行顺序口诀先找表FROM/JOIN→ 再过滤WHERE→ 再分组GROUP BY→ 再筛组HAVING→ 再选列SELECT→ 再排序ORDER BY→ 最后分页LIMIT四、Web 安全联动与硬核加固1. 会话控制技术Cookie 与 Session网安点拨HTTP 协议本身是无状态的服务器无法知道两次请求是不是同一个人。为了保持登录状态开发中引入了 Cookie 和 SessionCookie存储在客户端/浏览器大小受限≤ 4KB每次请求会自动携带在 HTTP Header 中发给服务器安全风险存在本地极易被篡改、窃取如通过 XSS 漏洞盗取 Cookie 导致会话劫持Session存储在服务器端无大小限制安全性较高机制服务器在内存中保存 Session给浏览器发一个SessionID通常存在 Cookie 里。浏览器带上 ID 来找服务器相认2. 数据库安全加固三板斧拿到数据库管理员权限后必须做好的基础合规加固账号与密码加固杜绝使用默认账号名和密码修改root拒绝弱口令设置强密码策略并定期更换删除冗余或测试账号如test库和匿名账户MySQL 端口加固修改默认的3306端口为其他不常见的高位端口防止自动化脚本扫描利用防火墙如 iptables严格限制访问 IP绝对禁止将 3306 端口直接暴露在公网上连接行为控制在配置文件中严格限制非必要用户的远程连接权限仅允许localhost本地连接如必须远程连接应配置 SSL/TLS 加密传输通道防止流量被中间人监听截获