CTF入门学习3-Web通信基础

技术CTF入门学习3-Web通信基础 CTF入门学习3-Web通信基础本篇文章主要介绍WEB通信的机制,主要介绍了URL协议和HTTP协议。Web安全基础
01 Web通信
这个部分重点介绍浏览器与We

CTF介绍3-3-网络传播基础

本文主要介绍网络通信的机制,主要是网址协议和超文本传输协议。

Web安全基础

01 Web通信

本部分重点介绍了浏览器和网络服务器之间的详细通信过程。

01-00 URL协议

只要在线访问服务器,就不能离开网址。

URL是什么

网址是我们在浏览器中输入的站点链接。它也被称为“统一资源定位符”。

URL支持很多协议,比如HTTP、FTP等等。

PS:PS:HTTP和URL有什么区别?

答:(来源(https://www.jianshu.com/p/4fb712c05b63)

http:(超文本传输协议)超文本传输协议是一种用于将超文本从万维网(WWW :)服务器传输到本地浏览器的传输协议。

URL:(统一资源定位符)统一资源定位符是互联网上可用资源的位置和访问方法的简明表示,是互联网上标准资源的地址。

URL有什么作用

该网址用于定位服务器的资源。

如何定位网站(服务器)的资源?

让我们想象一下:我们在网上买的东西是如何到达我们这里的?

我们提供了交货地址。

在网络世界中,网址充当接收地址。

浏览器可以通过URL定位服务器的资源,然后向我们展示服务器的资源。

这个“收货地址”有一定的格式:

schema ://主机[: port #]/路径/./[查询字符串] [#anchor]

Schema:底层协议,如http、https、ftp等。

host:服务器的域名或IP地址;

:端口# :服务器端口,HTTP默认端口为80(可以省略),其他端口需要指定;

/path:访问资源的路径;

查询字符串:发送到服务器的数据;

#锚:锚;通常表示页面上的特定位置。

所有的网址都遵循这个网址标准。

URL实例

http://dun.163.com/sj/test/test.jspname=sviergnx=true#stuff

逐个解析:

schema:http协议;

host:dun.163.com;未指定端口,默认为80

/path:/SJ/test/test.jsp,获取资源的途径;

query-string:名=sviergnx=真;

anchor:#东西

这部分需要经常回忆。

01-01 HTTP协议

HTTP是Web通信时使用的协议Web建立的基础;它是网络上使用最广泛的协议。

什么是HTTP

也称为超文本传输协议;超文本传输协议;

为了理解这个协议的过程,让我们想象一下快递小哥的工作:

快递小哥先用卡车送货。等货送到我们收货地址,快递小哥会打电话给我们,说是某公司的快递要我们去取件。

如果快递小哥要送进小区,我们需要告诉物业让他进去,相当于给他一张通行证;

当快递员把货物交给我们时,我们需要签收。当快递员拿到快递时,他就完成了一个快递任务。

HTTP协议类似。

浏览器:快递小哥

快递员用卡车送货:浏览器通过Get发送请求。

HTTP中的主机相当于“收件人地址”;

用户代理相当于快递小哥所在的公司;

H

TTP包含的Cookie就相当于能够进入我们小区的凭证。

当服务器收到浏览器的HTTP请求后,会返回一个状态码(对应收到这个事实)和相应内容(对应已签收的字据)。状态码为200表示正常收到(状态码可以在上文中/前一篇的开发者工具的网络中查看)

可以看到HTTP协议的请求和响应包含了一些特殊的属性,包含方式、User-Agent、Host、返回的状态码等等;

这些都属于HTTP的报文。

什么是HTTP的报文

分为三部分:起始行、头、身体

左边,是浏览器发送的HTTP请求报文,右边是服务器返回的HTTP请求报文;

  • 左侧

    • 第一行:请求行Request Line

    • 之后:是我们的头部Headers;

    • 下面:应该是我们的数据体,但由于是GET请求,没有数据体

    • 注意头部和数据体之间是有一个空行的。

  • 右侧

    • 第一行:状态行;

      • 比如:HTTP/1.1 200 OK

    • 头部

    • 主体:也就是响应的正文

    • 注意响应的头部和主题之间也是有一行空行的。

HTTP请求示例

比如一个发帖的HTTP请求

当我们进行发帖的时候,我们的请求报文和响应报文如下:

  • 请求

    • 第一行:请求行

      • 这里是POST

    • Headers

      • 相较于上面,多了一个Cookie字段,就是前面提到的用户凭证,相当于告诉服务器,是我发的这个帖子。

      • 黑客就比较喜欢获取这个Cookie凭证,如果获取,就拥有了“我”的凭证,可以以“我”的身份发帖。

      • 后面会接触一些这方面的安全漏洞。

    • 也有了数据体

      • 就是要发布的帖子的相关内容

HTTP请求的其他方法

  • HEAD

    • 与GET请求类似,不同是只返回HTTP的头部信息,没有数据体,也就没有页面内容。

  • PUT

    • 上传指定的URL描述

  • DELETE

    • 删除指定资源

  • OPTIONS

    • 返回服务器支持的HTTP方法

01-02 HTTP头的Referer

这是除了HTTP请求方式和Cookie的概念外,另一个重要概念。

Referer就是告诉服务器,我们从什么地方来(即告诉物业我们是哪个快递公司的);

举例:

我们通过https://m.study.163.com/直接跳转到页面。和从bing主页搜索云课堂再进入,开发者工具中显示的HTTP请求是不同的,后者会多一个Referer头,表示是从bing的这个链接来的。

如图;图一是直接跳转;图二是搜索跳转;

直接跳转Rerfer

搜索跳转的Rerfer与之不同。

所以由于Referer可以告诉服务器该次请求的来源,所以很多Web服务器会通过Referer来进行统计(比如CNZZ、百度统计)

从安全的角度来讲,Referer还可以用来判断来源是否合法。

(比如:

  • 防止盗链

    • 比如一些网站不想被盗用内容或恶意引用,就会通过Referer限制来者

  • 防止CSRF漏洞

    • (暂不了解

01-03 HTTP状态码

302 --跳转

比如:在响应报文的状态行(第一行)

HTTP/1.1 302 Moved Temporarily

在跳转同时,还会在响应报文的Headers部分有一个Location字段,是跳转到的URL地址,也就是这个响应报文告诉我们,我们需要跳转到Location中的URL地址。

除了这两处,还会有Set-Cookie字段,作用是Web服务器向我们的浏览器颁发凭证,比如我们通过用户名密码登录成功后,Web服务器通常就会给我们颁发一个凭证。

类似的是301。

除此之外,还包括10x,20x,30x,40x,50x;每个状态码都代表不同的意思。

分类 分类描述
10x 信息,服务器收到请求,需要请求者继续执行操作
20x 成功,操作被成功接收并处理
30x 重定向,需要进一步的操作以完成请求
40x 客户端错误,请求包含语法错误或无法完成请求
50x 服务器错误,服务器在处理请求的过程中发生了错误

具体的状态码可以到后面再学习,或用到查看。

01-04 实例演示

我们打开Edge浏览器,输入https://www.cnblogs.com/Roboduster

我们用F12打开开发者工具,进入“网络”,刷新一下,查看“文档”,选中head头,可以看到有请求头、响应头,点击就可以看源码,有一些是上面讲过的,还有些字段是不熟悉的。这些字段可以自行查阅。

除了HEADER外,我们可以看一看响应的具体内容,在左侧的“响应”中;Cookie中有请求的Cookie等等。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/107438.html

(0)

相关推荐

  • 10cm是多少米,10cm等于多少米

    技术10cm是多少米,10cm等于多少米10厘米等于0.1米10cm是多少米。 (1)“米”(metre),国际单位制基本长度单位,符号为m。可用来衡量长、宽、高。
    (2)分米(英文名为decimetre、dm)是长度

    生活 2021年10月26日
  • 怎样生成一个基础的springboot项目

    技术怎样生成一个基础的springboot项目今天就跟大家聊聊有关怎样生成一个基础的springboot项目,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在线生成

    攻略 2021年12月2日
  • 好用的开源JavaScript图表库有哪些

    技术好用的开源JavaScript图表库有哪些这篇文章主要介绍好用的开源JavaScript图表库有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、 Chart.jsChart.js 是一个

    攻略 2021年10月30日
  • ADO.NET存储过程调用举例分析

    技术ADO.NET存储过程调用举例分析这篇文章主要讲解了“ADO.NET存储过程调用举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ADO.NET存储过程调用举例分

    攻略 2021年12月3日
  • quartz.net动态创建任务(quartz.net怎样知道执行结果)

    技术Quartz在.NET中怎么使用本篇内容主要讲解“Quartz在.NET中怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Quartz在.NET中怎么使用”吧!一、

    攻略 2021年12月17日
  • C++怎么使用委托构造函数实现所有构造函数的共通动作

    技术C++怎么使用委托构造函数实现所有构造函数的共通动作本篇内容主要讲解“C++怎么使用委托构造函数实现所有构造函数的共通动作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C

    攻略 2021年11月29日