#请求行
#请求行
请求行由三个标记组成:请求方法,请求url和HTTP版本,他们用空格分享。
例如 :GET /index.html HTTP/1.1
HTTP 规划定义了8中可能请求的方法:
GET:检索URL中标识资源的一个简单请求
HEAD:与GET方法相同,服务器只返回状态行和头标,并不返回文档
POST:服务器接收被写入客户端输出流中的数据的请求
扫描二维码关注公众号,回复: 14914860 查看本文章PUT:服务器保存请求数据作为指定URL新内容的请求
DELETE:服务器删除URL中命令的资源的请求
OPTIONS:关于服务器支持的请求方法信息的请求TRACE: web服务器反馈Http请求和其头标
的请求
CONNECT:已文档化,但当前未实现的一个方法,预留做隧道处理
请求头
由关键字/值组成,每行一对,关键字和值用冒号分享。请求头标通知服务器用户客户端的功能和标识
HOST:主机或者域名地址
Accept:指浏览器或其他客户端可以接受的MIME文件格式。servlet可以根据它判断并返回适当的文件格式。
User-Agent:是客户端浏览器的名称
Accept-Langeuage:指浏览器可以接受的语言的种类,如en或en-us,指英语。
X-Forwarded-For:是一个 HTTP 扩展头部,主要是为了让 Web 服务器获取访问用户的真实 IP 地址
Connection:用来告诉服务器是否可以维持固定的HTTP连接。http是无连接的。HTTP/1.1使用keep-Alive为默认值,这种,当浏览器需要多个文件时(比如一个HTML文件和相关的图像文件),不需要每次都建立连接
Cookie:浏览器用这个属性向服务器发送cookie。cookie是浏览器 中寄存的小型数据体,
他可以记载和服务器相关的用户信息,也可以来实现会话功能。
Referer:表明产生请求的网页的url。比如从网页http://www.baidu.com/index.php中点击到一个链接的网页http://jd.com/login.php,在向服务器发送http://jd.com/login.php的请求中,Referer是从http://www.baidu.com/index.php这个页面来的。这个属性可以用来跟踪web请求是从什么网站来的
Content-Type: 用来表明Request的内容类型。可以用HttpServletRequesta的getContentType()方法取得
Accept-Charset:指出浏览器可以接受的字符编码。英文浏览器的默认值是ISO-8869-1
Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到web响应之后先解码,然后在检查文件格式。
空行
最后一个请求头标之后是空行,发送回车符和退行,通知服务器一下不在有头标
请求数据
使用POST传送,最常使用的是 Content-type和 Content-Leng
ght头标
Response返回数据包数据格式
#Response请求数据包的数据格式
一个响应由四个部分组成:状态行,响应头标,空行,响应数据。
1.状态行:协议版本,数字形式的状态代码和状态描述,个元素之间以空格分隔
2.响应头标:包含服务器类型,日期,长度,内容类型等
3.空行:响应头于响应体之间用空格隔开
4.响应数据:浏览器会将实体内容中的数据取出来,生成相应的页面
HTTP响应码:
1xx:信息,请求收到,继续处理
2xx : 成功,行为被成功的接受,理解和采纳
3xx: 重定向,为了完成请求,必须进一步执行的动作
4xx:客户端错误
5xx:服务器错误
200:存在文件
403: 存在文件夹
3xx: 均可能存在
404: 不存在文件及文件夹
500: 均可能存在
#响应头标
最后一个响应头标之后是一个空行,发送回车符和退行,表明服务器以下不再有头标。
#响应数据29
HTML文档和图像等,也就是HTML本身
PC端和app抓包操作
PC端:抓进程工具:WSExplore ,Wireshark
APP:需要下载模拟器,比如逍遥模拟器
长按左键,修改网络。
高级选项->代理
设置你本机的ip地址,设置一个端口
bp设置ip和端口,模拟器设置的ip和端口是什么这里就设置什么。
勾选上。
如何在web访问app的网页
先使用burp打开模拟的一个应用,接收到数据包将的进行拦截下来。
将数据包发送到Repeater模块中记录一下。
把host的地址和url的联合在一起,在web端构造url去访问
这里请求错误是因为我们使用的web的浏览器发送的请求,和app端发送的请求数据包不同,所以失败
再次使用web端发送请求并且开启抓包的功能。
把之前app端的数据包在Repeater中复制出来进行和前面截取到了web端的数据包进行替换
替换后,把数据包放出去
这里页面显示成功!
一定要记住如果要使用web访问app的网页的话一定要修改数据包做到统一
案例演示:
User-Agent演示
什么是Nettype 微信6.0内嵌浏览器User-Agent字符串增加了NetType字段_quark~的博客-CSDN博客_nettype
对方是通过User-Agent来检查我们什么登陆的。对方的需求是必须得是手机登陆,但是我们user-agent的信息是windows也是web,显然不符合需求所以我们需改更改user-agent的参数
把他修改成手机端的,而且得是2G网络。那么就修改USER-aget的参数。
替换成iphone的请求和2G的参数 ->放包
成功
涉及Referer案例
我们的目标是访问x_search_index.php这个页面,但是我们当前是通过 http://124.70.71.251:43251/index.html这个页面点击进入到_xssearch_index.php,他的要求来源地址必须是通过google.com访问,那么我们就修改我们的来源的Referer
成功
涉及:X-Forwarded-For
首先设置回环地址
X-Forwarded-For:127.0.0.1
发送到Intruder模块中将密码设置成一个字典去跑
根据长度判断密码是admin
回到数据包将密码修改成admin发送出去
涉及:X-Forwarded-For -User-Agent
这里提示使用微信打开,那就是判断出来了我们是web他需要的是手机端。
第一步修改Usert-Agent先修改成手机端的,让对方进行判断 。
修改完成后。
这里设置X-Forwarded-For因为对方可能是使用X-Forwarded检查了ip的唯一性,一个ip只能投一个
使用到了以上的函数
将ip设置成变量,因为一个ip只能投一票,所以我们要一直变化我们ip去进行投票
成功