如何用Burp配合sqlmap复现漏洞

11 人参与

哎,说真的,我以前总觉得Burp和sqlmap是两个完全独立的工具,各干各的,直到有一次我在复现一个老漏洞时卡了壳,才真正体会到它俩“双剑合璧”有多香。那种行云流水的感觉,就像游戏里开了挂一样,效率直接拉满。

别再说sqlmap抓不到包了!

你是不是也遇到过这种尴尬?用sqlmap直接跑一个登录后的页面,发现它连cookie都处理不好,或者那个请求参数复杂得要命,根本没法直接用-u来搞。这时候,Burp的代理功能简直就是救星。

我的习惯是,先在浏览器里正常操作,把触发漏洞的那个关键HTTP请求,完完整整地用Burp给“逮住”。比如一个搜索框,或者一个带参数的详情页。重点来了!一定要在Burp里右键,把整个请求“Copy to file”,保存成一个txt文件。这个文件里包含了所有headers、cookies、post数据,是复现的“原汁原味”的原材料。

让sqlmap“吃”下整个请求

有了这个txt文件,事情就简单多了。打开你的命令行,那种感觉就像给sqlmap喂了一颗“记忆面包”。最基础的命令就是:

sqlmap -r 你保存的请求.txt --batch

看到那个 -r 参数了吗?它就是关键。sqlmap会直接读取这个文件里的所有信息,自动识别注入点,完全不用你再手动去构造URL和Headers。我第一次用的时候,看着它自动识别出注入类型、开始爆数据,心里就俩字:舒坦

一些让我直呼内行的骚操作

光是基础用法还不够爽。配合Burp,你还能玩出花来。比如,有些漏洞点藏在复杂的JSON数据或者XML里,手动构造sqlmap的payload能累死人。我怎么办?我会先在Burp的Repeater模块里,把那个参数值(比如`{"id":"1"}`)替换成一个标记,比如`{"id":"*"}`。

然后,把这个标记过的请求保存成txt。运行sqlmap时加上 `--prefix` 和 `--suffix` 参数,告诉它星号`*`才是你要测试的地方,前后那些引号、括号都是固定格式。这样一来,sqlmap就能精准地在JSON字符串内部进行注入了,这手动搞不得累趴下?

别忘了“场景还原”

我们复现漏洞,很多时候是为了写报告或者自己学习。用Burp抓包再给sqlmap跑,最大的好处就是“可复现”。你的请求文件就是一份完美的证据链。你可以清晰地展示:“看,我发送了这个包含恶意payload的请求,服务器返回了这样的数据,证明这里存在SQL注入。” 整个过程严丝合缝,比自己口述“这里加个单引号报错了”要有力得多。

我现在已经养成肌肉记忆了,遇到任何需要深入测试的SQL注入点,第一时间就是打开Burp抓包保存。这俩工具的组合,彻底治好了我对于复杂场景注入测试的头痛病。你也试试,保管你用过一次就再也回不去了。

参与讨论

11 条评论
  • 清泉日记

    那个啥,json里加*标记真省事,不然手调payload累死

    回复
  • 潜影微光

    –batch是神来之笔,不然每次都要手动点确认太烦了

    回复
  • 血战王

    我之前试过直接-u带cookie,结果老失败,原来是姿势不对

    回复
  • 咕噜星人

    保存请求到txt这步不能少,少了就跟无头苍蝇一样乱撞

    回复
  • 小飞侠Tom

    求问,如果参数被加密了还能这么搞吗?比如AES包了一层

    回复
  • 奇奇猫

    说实话第一次听说-r还能读文件,一直以为只能-u硬怼

    回复
  • 晴天果盘

    burp repeater改完直接导出,配合prefix简直精准打击

    回复
  • 人群避

    这招太实用了,刚用完burp抓包喂给sqlmap,直接爆了数据😂

    回复
  • ZeroSignal

    太贵了吧这也,光配环境就折腾半天,新手劝退

    回复
  • 星际守护

    之前搞过一次登录后的注入,cookie轮转搞得我头大

    回复
  • 孤岛旅者

    json注入那个技巧挺实用的,省了不少事

    回复