简单使用BurpSuite及请求包、响应包的格式和含义
一、HTTP协议基础
HTTP:HyperText Transfer Protocol,超文本传输协议
1.协议特点:
- 简单快速,请求方式get post head等8中请求方式
- 无连接(一次请求就断开)无状态(没有记忆功能,不会记录任何信息)
2.支持的模式:B/S、C/S(websocket进行通信)
二、HTTP的请求包
1.请求包格式:request=请求行(请求方式 URL 协议/版本)+请求头(形势都为ket:value)+空行+请求数据(若此处为空,请求包的请求方式为get,数据存放在URL中,若有数据,则说明该请求方式为post)
2.请求方式:
- http1.0版本: GET POST HEAD
- http1.1版本: GET POST HEAD OPTIONS DELETE TRACE CONNECT PUT PATCH
方法 | 描述 |
GET | 请求指定的页面信息,并返回实体主体 |
POST |
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。 数据被包含在请求体中。POST 请求可能会导致新的资源的建立和或已有资源的修改 |
HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 |
OPTIONS | 允许客户端查看服务器的性能 |
DELETE | 请求服务器删除指定的页面 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断 |
CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器 |
PUT | 从客户端向服务器传送的数据取代指定的文档的内容 |
PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新 |
(表格来源:https://www.runoob.com/http/http-methods.html,感谢!)
- GET和POST请求方式的比较:
相同点:
- 都可以创建数组array,数组包含键值对(key=value),其中的键为表单控件的名称,值为用户输入的数据
- 分别被视为$_GET和$_POST,是超全局变量
不同点:
- GET型方式:将用户发送的数据拼接到URL中,并且发送的数据量较小,不安全
- POST型方式:参数放在请求包中的请求数据中,查看必须使用工具查看,发送的数据量较大,安全性较高
三、HTTP的响应包
响应包:用户发送的请求包达到服务器后,要去处理该请求,把处理之后的结果发送给用户浏览器,我们将该结果称为响应包,用response表示
1.响应包格式:response=状态行(协议/版本 状态码)+消息报头+空行+响应正文(也叫做响应内容,是由HTML+CSS+JS组成的响应正文)
2.状态码
- 状态码由三位数字组成,第一位数字表示响应的类型,共有5种类型:
1xx:表示服务器已经接受到请求并且需要继续处理
2xx:表示服务器已经成功接受到请求,并处理了该请求
3xx:表示重定向,URL要跳转到其他页面去请求
4xx:表示用户请求由问题
5xx:表示服务器内部出错
3.常见状态码:
- 200 OK
表示请求被服务器正常处理
- 302 Found
临时重定向,表示请求的资源临时搬到了其他位置
- 304 Not Modified
表示客户端发送附带条件的请求时,条件不满足
- 400 Bad Request
表示请求报文存在语法错误或参数错误,服务器不理解
- 403 Forbidden
表示对请求资源的访问被服务器拒绝了
- 404 Not Found
表示服务器找不到你请求的资源
- 500 Internal Server Error
表示服务器执行请求的时候出错了
四、URL
URL:uniform resource locator,统一资源定位系统,在网络中用来表示某处的资源
- URL格式:
http(协议)://www.baidu.com(域名):8080(端口)/news(虚拟目录)/index.php(文件名部分)?parameter=deal&id=35(参数)#name(锚部分)
- parameter=deal&id=35两个参数
- 参数从?后面开始的,第一个参数和第二个参数之间用&连接
五、JDK
JDK:Java的软件开发工具包,方便我们在本地运行Java开发的工具
1.下载JDK时要复制安装JDK的路径
2.配置环境变量
- win7 配置环境变量:
右击计算机-->属性-->高级系统设置-->高级-->环境变量-->系统变量-->path,双击进入,在变量值中最后添加;加上安装JDK的路径-->确定
- win10 配置环境变量:
右击计算机-->属性-->高级系统设置-->高级-->环境变量-->系统变量-->path,双击进入,在最后的空白行中直接输入JDK的安装路径
验证:在doc命令窗口中输入 java -version 回显下图信息,表示配置环境变量成功
六、BurpSuite
BurpSuite:多功能渗透测试工具,渗透测试神器,使用JAVA开发,功能齐全,方便渗透测试人员去测试WEB站点
- 功能:爬虫、扫描、拦包、重发、爆破、解码和编码、比较等等
七、使用BP(BurpSuite的简称)拦截数据包
1.下载JDK,配置环境变量(上面有详细步骤)
2.下载一个火狐浏览器,并打开,找到foxyproxy,右击,设置代理服务器,设置过程如下图所示
- 代理服务器:代理网络用户去取得网络信息。形象地说,它是网络信息的中转站,是个人网络和Internet服务商之间的中间代理机构,负责转发合法的网络信息,对转发进行控制和登记
- 过程如图所示:
3.打开BP,点击Proxy --> Options配置,进入一下界面,可以看到BP默认监听8080端口
- Proxy是BurpSuite最核心的部分,通过拦截,查看和修改所有的请求和响应您的浏览器与目标Web服务器之间传递
4.点击Intercept截断 --> 关闭拦截状态Intercept is off(默认开启拦截状态)
- 这里若开启拦截,浏览网页时将请求包拦截,就无法得到服务器的响应,从而浏览不到界面
5.打开phpStudy,启动Apache2、FTP、MySQL
6.在phpstudy_pro/www/中,删掉文件info.php,新建index.html
7.打开火狐浏览器,右键foxyproxy开启代理服务器(或点击foxyproxy,在选择工作模式中修改),狐狸头变蓝,在地址栏中输入127.0.0.1
8.打开BP,开启拦截状态Intercept is on,等待或者刷新火狐浏览器界面,可以看到如图所示界面
- 这里可以看到,请求方式为GET
9.打开BP,关闭拦截状态,打开火狐浏览器,浏览任意网站
- 关闭BP,抓取其他请求包,但是在浏览网站时会出现以下界面
- 点击高级,发现下面没有添加例外,换个网站
- 添加例外后,就能访问了
10.抓取POST包,就要向指定资源提交表单或者上传文件,在发起请求之前,打开BP,开启拦截状态后,发起请求,BP就可以拦截到POST包
11.拦截响应包时,要将截断服务器响应的选项勾选,如下图所示
12.在拦截到POST请求包时,点击Forward发送,就可以查看到响应包
六、数据头中每个参数的含义
1.请求头中每个参数的含义:
参数 | 含义 |
Host |
表示请求服务器的IP |
User_Agent |
表示用户本地环境(工具环境) |
Accept |
浏览器可解析的应用环境 |
Accept-Language |
浏览器可解析的语言类型 |
Accept-Encoding |
浏览器可解析的编码方式 |
Referer |
表示请求页面是从哪里来的(当前所处位置) |
Cookie |
表示服务器和浏览器之间的会话状态, 该会话状态可以表示用户是否登陆过, 一般都是服务器给配置的,具有时效性。 cookie失效,就需要用户重新登录, 只有登录成功之后,浏览器就会保存cookie, 每次去服务器去请求都会带上cookie, 并且该cookie是需要在服务器中验证的 |
X-Forwarded-For |
表示用户真实的IP |
Content-Type |
内容类型,表示该请求数据的类型 |
2.响应头中每个参数的含义:
参数 | 含义 |
Data |
服务器发出响应的时间 |
Server |
服务器的环境(如:fcgid表示Apache版本) |
Content-Length |
返回来数据包的长度 |
Connection |
连接状态 |
Content-Type |
返回响应数据的类型,告诉浏览器该使用哪种 方式去解析或打开该响应数据的内容 |
Location |
表示要跳转到哪个页面中 |
Set-Cookie |
表示服务器给浏览器设置cookie的值 |