HTB-网络请求

网络请求

HTTP基础

HTTP协议

  • 大多数互联网通讯是通过http协议来进行的web请求
  • http协议是用于访问万维网资源的应用程序级的协议,http协议也被称为超文本传输协议,其中超文本代表着包含到其他资链接的文本和用户可以轻松理解的文本
  • http通信由客户端和服务器组成,其中客户端向服务器请求资源。服务器处理请求并返回请求的资源。该通信默认的端口是80端口

URL

http上的资源通过url访问

image-20241103230953710

Component ** Example** ** Description**
Scheme http:// https:// 这用于标识客户端正在访问的协议,并以冒号和双斜杠(://)结尾
User Info admin:password@ 这是一个可选组件,包含用于向主机进行身份验证的凭据(以冒号分隔),并使用at符号(@)与主机分隔
Host inlanefreight.com 主机表示资源位置。这可以是主机名或IP地址
Port :80 端口主机之间用冒号()分隔。如果未指定端口,则HTTP方案默认为端口80HTTPS默认为端口443
Path /dashboard.php 这指向正在访问的资源,可以是文件或文件夹。如果没有指定路径,服务器返回默认索引(例如index.html
Query String ?login=true 查询字符串以问号(),由一个参数(例如login)和一个值(例如true)组成。多个参数之间可以用&()分隔。
Fragments #status 片段由客户端的浏览器处理,以定位主要资源中的部分(例如,页面上的标题或部分)

HTTP流

image-20241104081631707

如图,用户第一次在浏览器输入URL的时候,会向DNS(域名解析)服务器发送一个请求,解析其域名获取其IP。浏览器通常在本地的/etc/host文件中查找记录。我们可以在这个文件中手动添加IP后跟域名。

当浏览器获得链接到请求域的IP地址,会向默认端口80发送请求,服务器接收并处理它,默认情况下在收到请求后返回索引文件

索引文件(举例为index.html)由web服务器读取并且作为HTTP响应返回,浏览器则呈现该内容给客户

HTTPS协议

https中的数据会作为加密流进行传输,该协议被称为安全超文本传输协议

HTTPS流

image-20241104084501303

如果我们键入http://而不是https://来访问强制执行HTTPS的网站,浏览器会尝试解析域并将用户重定向到托管目标网站的Web服务器。请求首先发送到端口80,这是未加密的HTTP协议。服务器检测到这一点,并将客户端重定向到安全HTTPS端口443。这是通过301 Moved Permanently响应代码完成的

接下来,客户端(Web浏览器)发送一个“客户端问候”数据包,给出有关其自身的信息。在此之后,服务器回复“server hello”,然后进行密钥交换以交换SSL证书。客户端验证密钥/证书并发送自己的密钥/证书。在此之后,启动加密握手以确认加密和传输是否正常工作。

HTTP请求和响应

HTTP请求

image-20241104084826513

HTTP响应

image-20241104084903330

HTTP标头

可以分为以下几种标头

  1. 通用标头
  2. 实体标头
  3. 请求标头
  4. 响应头
  5. 安全性报头

实体标头

用于描述传输的内容,通常出现在POST或者PUTi请求中

报头 例如 描述
Content-Type Content-Type:text/html 用于描述正在转移的资源类型。该值由客户端的浏览器自动添加,并在服务器响应中返回。字符集字段表示编码标准,例如UTF-8
Media-Type Media-Type: application/pdf media-type类似于Content-Type,描述了正在传输的数据。这个头在让服务器解释我们的输入时起着至关重要的作用。字符集字段也可以与此报头一起使用。
Boundary boundary="b4e4fbd93540" 当同一消息中有多个内容时,用作分隔内容的标记。例如,在表单数据中,此边界用作--b4e4fbd93540来分隔表单的不同部分。
Content-Length Content-Length: 385 保存被传递的实体的大小。这个头是必要的,因为服务器使用它从消息体读取数据,并且由浏览器和cURL等工具自动生成。
Content-Encoding Content-Encoding:gzip 数据在被传递之前可以经历多次转换。例如,可以压缩大量数据以减小消息大小。应该使用Content-Encoding标头指定所使用的编码类型。

请求标头

客户端在HTTP请求中发送的请求头

报头 例如 描述
Host Host: www.inlanefreight.com 用于指定要查询资源的主机。它可以是域名或IP地址。HTTP服务器可以配置为托管不同的网站,这些网站是基于主机名显示的。这使得主机头成为一个重要的枚举目标,因为它可以指示目标服务器上是否存在其他主机。
User-Agent User-Agent: curl/7.77.0 User-Agent头用于描述请求资源的客户端。这个头可以透露很多关于客户端的信息,比如浏览器、版本和操作系统。
Referer Referer: http://www.inlanefreight.com/ 表示当前请求来自何处。例如,单击Google搜索结果中的链接将使https://google.com成为引用者。信任这个头可能是危险的,因为它很容易被操纵,导致意想不到的后果
Accept Accept: */* Accept标头描述了客户端可以理解的媒体类型。它可以包含多个媒体类型,由逗号分隔。*/* 值表示接受所有媒体类型。
Cookie Cookie: PHPSESSID=b4e4fbd93540 包含格式为name=value的cookie值对。Cookie是存储在客户端和服务器上的一段数据,用作标识符。每个请求都将这些传递给服务器,从而维护客户端的访问。Cookie还可以用于其他目的,例如保存用户偏好或会话跟踪。在一个标头中可以有多个cookie,并由分号分隔。
Authorization Authorization: BASIC cGFzc3dvcmQK 服务器识别客户端的另一种方法。成功验证后,服务器返回客户端唯一的令牌。与cookie不同,令牌仅存储在客户端,并由服务器根据请求检索。根据所使用的Web服务器和应用程序类型,有多种身份验证类型。

响应头

报头 例如 描述
Server Server: Apache/2.2.14 (Win32) 包含有关处理请求的HTTP服务器的信息。它可用于获取有关服务器的信息(如版本),并进一步枚举它
Set-Cookie Set-Cookie: PHPSESSID=b4e4fbd93540 包含客户身份识别所需的Cookie。浏览器解析cookie并存储它们以备将来的请求。此标头遵循与Cookie请求标头相同的格式。
WWW-Authenticate WWW-Authenticate: BASIC realm="localhost" 通知客户端访问请求的资源所需的身份验证类型。

安全性报头

报头 例如 描述
Content-Security-Policy Content-Security-Policy: script-src 'self' 规定网站对外部注入资源的政策。这可以是JavaScript代码以及脚本资源。此标头指示浏览器仅接受来自某些受信任域的资源,从而防止跨站点脚本(XSS)等攻击。
Strict-Transport-Security Strict-Transport-Security: max-age=31536000 阻止浏览器通过明文HTTP协议访问网站,并强制所有通信都通过安全HTTPS协议进行。这可以防止攻击者嗅探Web流量并访问受保护的信息,如密码或其他敏感数据。
Referrer-Policy Referrer-Policy: origin 指示浏览器是否应包含通过Referer标头指定的值。它可以帮助避免在浏览网站时泄露敏感的URL和信息

HTTP方式和代码

请求方式

方法 描述
GET 请求特定资源。可以通过 URL 中的查询字符串(例如?param=value )将其他数据传递到服务器。
POST 向服务器发送数据。它可以处理多种类型的输入,例如文本、PDF 和其他形式的二进制数据。该数据附加在标头后面的请求正文中。 POST 方法通常在发送信息(例如表单/登录名)或将数据(例如图像或文档)上传到网站时使用。
HEAD 请求向服务器发出 GET 请求时将返回的标头。它不返回请求正文,通常用于在下载资源之前检查响应长度。
PUT 在服务器上创建新资源。在没有适当控制的情况下允许此方法可能会导致上传恶意资源。
DELETE 删除网络服务器上的现有资源。如果安全措施不当,删除 Web 服务器上的关键文件可能会导致拒绝服务 (DoS)。
OPTIONS 返回有关服务器的信息,例如服务器接受的方法。
PATCH 对指定位置的资源应用部分修改。

响应代码

类型 描述
1xx 提供信息且不影响请求的处理。
2xx 请求成功时返回。
3xx 当服务器重定向客户端时返回。
4xx 表示from the client不当要求。例如,请求不存在的资源或请求错误的格式。
5xx with the HTTP server本身出现问题时返回。

GET

当浏览器访问URL的时候,默认会使用GET方式来获取资源

其参数在URL中进行传参,如http://:/search.php?search=flag

GET方式主要实现搜索和访问页面

POST

当 Web 应用程序需要传输文件或从 URL 移动用户参数,使用POST方式

image-20241105134532243

posted @ 2024-11-05 14:07  SchneiderGrace  阅读(120)  评论(0)    收藏  举报