前置知识回顾

  • 前期学习内容:有回显联合查询注入
    • 核心语句:union select 联合查询
    • **利用条件:**页面存在数据回显点,数据库查询结果直接展示在前端
    • **局限性:**现实业务中大量功能不属于查询类操作,不存在数据回显,无法使用联合查询注入

SQL 四大基础语法完整详解

1. SELECT 查询语句

标准语法:
-- 查询指定字段
 SELECT 字段1,字段2 FROM 表名 WHERE 条件; 
-- 查询表内所有数据 
SELECT * FROM 表名;
业务场景举例:
  • 网站登录
  • 关键词搜索
  • 商品展示
  • 新闻列表
  • 个人信息展示等数据查询类功能
执行逻辑:
后端接收用户参数 → 拼接 SQL 查询语句 → 检索数据库数据 → 数据返回前端页面展示
注入特征:
  • 具备数据回显
  • 可用 order by 判断字段数,union select 查询库、表、字段、数据
  • 注入门槛低,是基础入门注入方式

2. INSERT 插入语句

标准语法:
-- 指定字段插入数据 INSERT INTO 表名(字段1,字段2,字段3) VALUES(值1,值2,值3); -- 全字段直接插入 INSERT INTO 表名 VALUES(值1,值2,值3);
示例语句:
INSERT INTO t1(id,name,password) VALUES(1,'张三','123456');
业务场景举例:
  • 用户注册
  • 留言提交
  • 评论发布
  • 后台新增数据
  • 表单提交等
执行逻辑:
前端提交表单数据 → 后端拼接插入语句写入数据库 → 仅返回操作状态提示,无数据库原始数据回显
注入难点:
  1. 文本参数多为字符型,依赖单/双引号闭合
  2. 语句被 values() 括号包裹,增加闭合难度
  3. 无回显,无法使用联合查询

3. UPDATE 更新语句

标准语法:
UPDATE 表名 SET 字段1=新值,字段2=新值 WHERE 限制条件;
示例语句:
UPDATE t1 SET name='王五' WHERE name='李四';
业务场景举例:
  • 修改账号密码
  • 编辑个人资料
  • 后台内容修改
  • 网站数据同步更新等
执行逻辑:
传入修改参数与限定条件 → 执行更新语句修改数据库内容 → 仅提示操作成功或失败,无原始数据输出
注入风险:
  • 危害极高,可批量恶意修改全站数据、账号密码、核心配置信息

4. DELETE 删除语句

标准语法:
DELETE FROM 表名 WHERE 限制条件;
示例语句:
DELETE FROM t1 WHERE id=1;
业务场景举例:
  • 删除购物车商品
  • 删除评论、日志、订单
  • 后台数据清理等
执行逻辑:
接收删除条件参数 → 执行删除操作 → 静默执行,页面无任何数据返回与内容展示
注入特征:
  • 多为数字型参数,无需引号闭合
  • 完全无回显、无报错提示,是盲注高频场景

无回显注入产生核心原因

  1. SQL 语句属性差异
  • select 为数据读取操作,必须返回结果
  • insert/update/delete 属于写入、修改、删除操作,只执行动作,不返回查询数据
  1. 后端防护
  • 代码主动屏蔽数据库报错信息,关闭错误打印,前端无法看到数据库报错内容
  1. 业务逻辑限制
  • 增删改类功能仅反馈操作状态,不会将数据库原始数据渲染至前端页面

Pikachu 靶场完整学习框架


1. Insert 注入(注册功能)

底层 SQL 源码结构:
insert into member(username,pw,sex,phonenum,email,address) values('$_POST[username]','$_POST[pw]','$_POST[sex]','$_POST[phonenum]','$_POST[email]','$_POST[address]');
  • 可控注入点:username、pw、sex、手机号、邮箱、地址等所有输入框
  • 闭合方式:参数全部被单引号包裹,属于字符型注入
实操流程:
  1. 正常提交注册数据,抓包观察 POST 传参格式
  2. 输入单引号 ' 测试是否触发语法报错
  3. 使用 order by 探测字段数量
  4. 利用单引号闭合 + 注释符截断多余语句
  5. 结合报错注入、堆叠注入完成数据读取

2. Update 注入(资料修改功能)

底层 SQL 源码结构:
update member set username='$_POST[username]',pw='$_POST[pw]',sex='$_POST[sex]' where id=$id;
  • 注入特征:
  1. 自定义资料字段为字符型,单引号闭合
  2. 语句末尾存在 where 条件限制
  3. 操作后无数据回显,仅状态提示
实操思路:
  1. 单引号测试闭合漏洞
  2. 构造报错语句读取库名、表名、字段
  3. 闭合 where 条件,实现批量数据修改测试

3. Delete 注入(数据删除功能)

底层 SQL 源码结构:
delete from message where id=$_GET[id];
  • 注入特征:
    • GET 方式传参,id 为数字型参数,无引号闭合
    • 执行后无页面反馈,纯静默执行
实操思路:
  1. 拼接逻辑判断语句:and 1=1、and 1=2 观察页面差异
  2. 适用于布尔盲注、时间延时盲注实操练习
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐