本来笔者也认为有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,笔者写完这篇就去换(╯▔皿▔)╯
let
post
Http
Cookie (url : string) (
post
Data :string) (cookie : CookieContainer byref)=
let data = write
POST
post
Data
let req =
值得一提的是:除了修改方法为
POST
以及添加上传信息,还要加上媒体类型信息:
Content-Type: application/x-www-form-urlencoded
例题一、Bugku-
POST
接下来send to repeater。修改三个部分:
1、GET修改为
POST
方法
2、加上媒体类型信息:Content-Type: application/x-www-form-urlencoded
3、末尾添加需上传语句:whar=flag
即得flag
例题二、攻防世界-get_pos
1、get是从服务器上获取数据,
post
是向服务器传送数据。
2、在客户端, get
方式
在通过URL提交数据,数据在URL中可以看到;
post
方式
,数据放置在HTML HEADER内提交
3、对于get
方式
,服务器端用Request.QueryString获取变量的值,对于
post
方式
,服务器端用Request.Form获取提交的数据。
4、get
方式
提交的数据最多只能有1024字节,而
post
则...
get 是从服务器上获取数据
post
是向服务器传输数据 对于get
方式
服务器采用request.querystring获取变量的值 对于
post
方式
采用 request.from获取提交的数据
get的安全性比
post
小 但效率高
//同步get的
方式
func synchronousGet() {
//创建NSURL的对象
var url =
目录准备好web环境测试代码测试结果使用
burpsuite
抓包
准备好web环境
Kali 中已经有 Apache 了,在 /etc 目录下 ls 即可显示出来,所以只需要
进行
配置就可以了。(这里用其他 Linux 或 Windows 虚拟机都行)
打开 apache 服务的相关命令
/etc/init.d/apache2 start (开启)
/etc/init.d/apache2 restart (重启)
/etc/init.d/apache2 status (查看状态)
这里在 Kali
Swing_sheep:
SQLyog安装配置(注册码)连接MySQL