【BurpSuite】实战演练:Repeater模块在SQL注入漏洞挖掘中的核心应用

张开发
2026/4/17 23:10:57 15 分钟阅读

分享文章

【BurpSuite】实战演练:Repeater模块在SQL注入漏洞挖掘中的核心应用
1. Repeater模块SQL注入的手术台第一次用BurpSuite的Repeater模块时我把它比作外科医生的手术台——在这个操作空间里你可以对HTTP请求进行精细解剖和重组。特别是在SQL注入测试中Repeater的价值远超简单重放工具。它能让你像调试本地代码一样反复修改参数、观察响应这种即时反馈机制对漏洞验证至关重要。举个例子去年我测试某电商平台时在商品详情页发现id参数存在异常报错。通过Proxy拦截请求发送到Repeater后先尝试将id123改为id123看到数据库报错信息直接暴露了MySQL语法错误。这时Repeater的优势就显现出来了不需要反复刷新页面直接在Params标签里修改参数值点击Go就能看到最新响应。整个过程就像在IDE里修改变量值调试程序效率比用浏览器手动测试高出十倍不止。2. 从零构建注入攻击链2.1 环境准备与请求捕获实战中我习惯这样配置环境在Firefox设置手动代理127.0.0.1:8080BurpSuite的Proxy标签关闭拦截Intercept is off访问目标网站触发待测请求在HTTP history中找到目标请求右键Send to Repeater这里有个细节容易踩坑如果网站使用HTTPS需要先安装Burp的CA证书。我有次测试时死活抓不到包折腾半小时才发现是证书问题。建议在Proxy的Options标签里导出证书手动导入到浏览器信任列表。2.2 基础注入手法验证拿到请求后我通常会按这个顺序测试GET /product?id1 HTTP/1.1 Host: example.com单引号测试将id1改为id1观察是否报错逻辑测试尝试id1 and 11 对比 id1 and 12注释测试追加注释符如id1--在Repeater里做这些测试有个技巧不要直接在Raw标签改而是切换到Params标签修改value值。这样能避免手动处理URL编码系统会自动转换特殊字符。比如输入空格会自动变成%20单引号变成%27。3. 高阶注入技巧实战3.1 字段数探测的艺术确定字段数的经典方法是order by但在Repeater里有更高效的做法初始值id1 order by 1逐步增加数字直到报错记录最后一个正常响应的数字我开发过一个快速测试技巧先尝试order by 10快速定位大致范围再精细调整。比如order by 10报错就试55正常就试7...这个二分法能节省大量时间。在某个政府项目测试中用这个方法5秒就确定了字段数是6。3.2 联合查询的精准控制知道字段数后构造union select语句要注意确保前后字段数一致使用NULL代替不关注的字段通过数字标记显示位典型操作流程GET /product?id1 union select 1,2,3,4,5,6-- HTTP/1.1在Response里查找数字出现的位置这些就是数据回显点。有次测试发现数字显示在页面标题里差点错过这个关键显示位。所以建议用查看网页源代码功能全局搜索比肉眼找更可靠。4. 数据库信息提取实战4.1 基础信息收集通过显示位可以提取数据库版本version当前用户user()数据库路径datadir我习惯先获取这些信息判断数据库类型。有次以为是MySQL结果version返回PostgreSQL 12.3及时调整了后续注入策略。在Repeater里可以保存多个请求副本方便对比不同语句的返回结果。4.2 表结构探测技巧获取表名的高级payloadunion select 1,group_concat(table_name),3,4,5,6 from information_schema.tables where table_schemadatabase()--这里有个实用技巧如果返回结果被截断可以调整group_concat_max_len参数union select 1,concat(max_len:,group_concat_max_len),3,4,5,6--我曾遇到只能返回前1024字节的情况通过这个办法发现max_len设置过小后续改用limit分批次查询解决问题。5. Repeater的高级配置技巧5.1 请求处理配置顶部菜单有几个关键选项Update Content-Length自动修正请求头Unpack gzip/deflate处理压缩响应Follow redirections控制重定向测试登录口时要特别注意重定向问题。有次测试始终获取不到预期响应后来发现是没关闭重定向跟随导致跳转到了错误页面。5.2 数据对比功能右键响应内容选择Compare功能能直观显示两次请求的差异。这个功能在测试盲注时特别有用可以快速发现细微的响应变化。我常用它来对比正确和错误响应的区别辅助判断注入条件。6. 实战中的避坑指南6.1 编码问题处理遇到URL编码混乱时可以在Raw和Params视图间切换手动输入%20等编码字符使用CtrlU快捷键自动编码有次测试JSON接口花了两小时才发现是双编码导致的问题。后来养成习惯在修改复杂参数前先备份原始请求。6.2 性能优化建议当测试复杂注入时关闭不需要的拦截功能清理历史记录释放内存对长响应关闭HTML渲染在测试某个数据量大的系统时响应时间从10秒降到2秒仅仅是通过关闭Render视图实现的。

更多文章