如何用Burp配合sqlmap复现漏洞
墨者学院 - X-Forwarded-For注入漏洞实战Writeup
哎,说真的,我以前总觉得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抓包保存。这俩工具的组合,彻底治好了我对于复杂场景注入测试的头痛病。你也试试,保管你用过一次就再也回不去了。

参与讨论
那个啥,json里加*标记真省事,不然手调payload累死
–batch是神来之笔,不然每次都要手动点确认太烦了
我之前试过直接-u带cookie,结果老失败,原来是姿势不对
保存请求到txt这步不能少,少了就跟无头苍蝇一样乱撞
求问,如果参数被加密了还能这么搞吗?比如AES包了一层
说实话第一次听说-r还能读文件,一直以为只能-u硬怼
burp repeater改完直接导出,配合prefix简直精准打击
这招太实用了,刚用完burp抓包喂给sqlmap,直接爆了数据😂
太贵了吧这也,光配环境就折腾半天,新手劝退
之前搞过一次登录后的注入,cookie轮转搞得我头大
json注入那个技巧挺实用的,省了不少事