本来笔者也认为有hackbar就能应对所有http请求了,直到昨晚遇到一题要提交复杂参数的,发现hackbar会出现对参数解析错误的情况。。。和好♂homie一番交流后发现使用burp提交参数可以避免,但笔者竟然发现自己不会用burp提交参数。。于是赶紧各种搜索学习了一番,然而搜了半天都没有找到一篇讲的详细点的还是我自己综合好几篇摸索出来的,为了给后生扫清这种小障碍,遂有此篇
以攻防世界题目get_post为例子,链接:https://adworld.xctf.org.cn/challenges/problem-set-index?id=25
一,GET请求
①开启代理
②刷新页面,完成抓包,右键->【Send to Repeater】,这些是基操了
③get方式请求,直接在如下图位置加上【?get参数】,这里要提交a=1,所以就填【?a=1】(如果要求多个参数就用&连接,例如:?a=1&b=2&c=3...),填完了点很显眼的橙色按钮【send】进行发包
可以看到页面是有刷新的,出现了第22行的“框框框POST框框框...”,这其实是笔者的burp不知道为啥解析不了中文,原文就是“请再以POST方式随便提交一个名为b,值为2的变量”,如果不放心可以点【Render】呈现网页
可以看到这样提交的get参数确实是没什么问题的,
二,POST请求
如果要在burp中单独进行post请求,做法是把请求包中的GET改为POST,并在请求包中间任意一个位置加上下图中红框的这条项目,最后在包末尾直接写上要提交的post参数(不用像get那样先写一个问号),如果有多个参数则用&连接
像下图就是用POST方式提交两个参数的情景(只是这两个参数比较长而已,在hackbar提交这样的参数就会报URL解析错误,这就是为什么要用burp提交的原因)
添加项目:【Content-Type: application/x-www-form-urlencoded】
三,GET和POST混合请求
回到攻防世界这题,现在需要同时提交一个get参数【a=1】和一个post参数【b=2】,做法是:
按照POST的形式,并在URL中对应位置填写get参数,包末尾填写post参数,最最重要的是必须加上这条项目(可以加在包中间的任意位置)——
添加项目:【Content-Type: application/x-www-form-urlencoded】
如下图所示:(填完参数别忘了点【Send】发包啊我省略步骤了)
额外补一句,如果在【Render】栏目中flag不方便复制的话就切换到【Pretty】栏目,flag都是英文字符的,不存在解析不了的情况
当然最好是换一个能正常解析中文的burp,笔者写完这篇就去换(╯▔皿▔)╯