HTTP协议请求和响应的简单理解

HTTP协议

HTTP(HyperText Transfer Protocol,超文本传输协议)是浏览器与Web服务器之间的通信协议,是传递消息的一种规定。在1990年提出HTTP的1.1版本,1.1版本一直沿用到现在,并且是主流的版本。

  • HTTP协议是将html文档从Web服务器传输到Web浏览器,当访问php文件时,浏览器端接收到的并不是php这个文件的源代码,而是这个php文件的执行结果,这个结果就是html文档,也就是说php是在后端运行的。
  • HTTP是一个响应请求的协议,客户端发出请求,服务器响应客户端的请求,它能够明确区分哪端是客户端,哪端是服务端。HTTP并不会主动去连接客户端。
  • HTTP协议使用可靠的TCP连接,默认端口是80。但是HTTP会有明文传输漏洞,所以后面出现了HTTPS。
  • HTTP支持的是B/S,在浏览器像服务器提出请求时,只需要传输请求方法和路径,并且它可以传输任意类型的数据对象。
  • HTTP协议为了提高快速处理大量事物效率,把它设计成了不保存状态协议,即无状态协议。它并不会保存上一次连接时的信息,所以后来出现了Cookie技术,用来解决这个弊端。
请求-REQUEST
HTTP请求由请求行、请求头和请求正文这三个部分组成。

请求行:HTTP报文的第一行,由两个空格分成三部分

请求方法	资源路径	协议版本

请求方法:

  • GET:获取服务器的资源

  • POST:用来传输实体的主体,例如表单提交或者上传文件,GET方法也能办到这点,但是一般不用。

  • HEAD:与GET方法类似,但是只能返回头部,可以被用来查看资源是否存在。

  • PUT:向服务器上传文档(因为这个方法太危险,所以不使用)

  • DELETE:删除服务器上到资源(也是因为太危险而不使用)

  • TRACE:追踪路径(可以查看文件传输路径,但因为容易引发XST(跨站追踪)攻击而不怎么使用)

  • OPTIONS:用来测试服务器所支持的方法
    请求头:从请求报文第二行开始到第一个空行之间的内容。

  • Host:主要用于指定被请求资源的服务器地址和端口号

  • User-Agent:客户端浏览器信息(浏览器指纹)

  • Referer:包含一个URL,代表当前URL的上一个URL

  • Cookie:记录请求者的身份认证信息

  • Accept-Charset:用于指定浏览器接受的字符集

  • Content-Type:用于向接收方(浏览器或服务器)指示实体的介质类型(数据类型,MIME)

  • Content-Length:用于指明实体正文的长度,以字节方式存储的十进制数字来表示

  • Last-Modified:用于指示资源的最后修改时间
    请求正文:第一个空喊开始后的所有内容。

响应-RESPONSE

响应报文如下:

响应报文由状态行、响应头、响应正文三部分组成

状态行:响应报文第一行

协议版本 响应状态码 描述短语

响应报头:响应报文第二行开始倒第一个空行为止的所有内容,其中包含了关于HTTP响应的重要字段。
响应正文:响应报文从第一个空行开始倒最后的所有内容。服务器返回资源的内容,即浏览器接收到的HTML代码。
状态代码:

  • 1XX:信息性状态码(很少见)
  • 2XX:成功状态码(200 OK)
  • 3XX:重定向状态码(302 FOUND,304 Not Modified)
  • 4XX:客户端错误状态码(403,404 Not Found)
  • 5XX:服务器错误状态码(500)
    主要字段:
  • Data:时间和日期
  • Server:Web服务器指纹
  • Last-Modified:服务器通过这个头信息告诉浏览器,资源的最后修改时间
  • Content-Type:响应正文的类型
  • Set-Cookie:服务器向浏览器端写入Cookie信息
  • Location:重定向目标页面
  • Refresh:服务器通过Refresh头告诉浏览器定时刷新浏览器

在kali中利用telnet测试多种请求方法

首先用telnet命令连接服务器

telnet 192.168.42.146 80

测试GET方法

在这里插入图片描述
测试POST方法
在这里插入图片描述
测试HEAD方法
在这里插入图片描述

用BP分析一个网站后台的登录过程

在进入主页面的时候发现服务器响应码为302(重定向)
在这里插入图片描述

先用错误密码登录,Cookie并不完全

POST /cms/admin/login.action.php HTTP/1.1
Host: 192.168.42.146
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 52
Origin: http://192.168.42.146
Connection: close
Referer: http://192.168.42.146/cms/admin/login.php
Cookie: username=admin; userid=1; PHPSESSID=bge967e5b0bpspm22mgopebf03
Upgrade-Insecure-Requests: 1

username=admin&image.x=65&image.y=49&password=123789

转发之后会出现
在这里插入图片描述
在点击确定之后,发现BP上并没有抓取到数据,则说明没有数据流过,页面的切换是在本地浏览器上执行的。
再次输入正确的账号密码,会出现正确的Cookie信息。

POST /cms/admin/login.action.php HTTP/1.1
Host: 192.168.42.146
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 52
Origin: http://192.168.42.146
Connection: close
Referer: http://192.168.42.146/cms/admin/login.php
Cookie: username=admin; userid=1; PHPSESSID=bge967e5b0bpspm22mgopebf03
Upgrade-Insecure-Requests: 1

username=admin&image.x=61&image.y=45&password=123456
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值