CSDN话题挑战赛第2期
参赛话题:
文章目录
引言
应该对"http"这四个字母不陌生吧
每个网址的开头,总有个"http://“或者是"https://”
百度首页
https://www.baidu.com/
实际上,每个网址都符合以下格式
协议://域名或IP地址[:端口号] / 具体资源的路径
HTTPS是支持加密传输的HTTP协议,与HTTP协议大同小异。
HTTP定义
超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP),是互联网的基础协议
我们打开一个网页的时候,浏览器会向网站的服务器发送数据,告诉服务器我请求什么资源,服务器收到请求后发出响应,把响应的资源发回给浏览器显示出来。这里就有了一个通信的过程,而浏览器各种各样,服务器的程序也各种各样,这时候浏览器和服务器需要约定一个统一的数据传输格式,服务器才知道浏览器想要什么数据,浏览器才知道服务器要什么数据。这里的格式就是我们说的HTTP协议啦。
浏览器向服务器发出HTTP请求,服务器产生HTTP响应,发回给客户端。
HTTP请求的结构
客户端发送一个HTTP请求到服务器的请求消息包含以下四个部分:
请求行、请求头部、空行和请求数据
请求行
用来说明请求类型(GET/POST或是其它类型),要访问的资源以及所使用的HTTP版本.
这里的请求类型是 POST ,访问的资源是 /redpacket/2017/one-second-real-man/answer.php ,HTTP协议的版本是 HTTP/1.1
请求方式:GET与POST区别
字节数据:二进制流文件
上输视频、头像:必须用POST请求
GET请求
POST请求
区别:
- post多了Content-Type
- post的访问参数在请求体,而get的访问参数在请求头中
- 请求头的请求方式不同
请求头部
则是这个请求发送给服务器的时候的附加信息,说明浏览器版本类型,当前请求的格式,浏览器的Cookie等等.
空行
用来分开请求头部和请求体,浏览器发出去的请求是包含这个空行的。
请求体
是这个请求所携带的数据,例如我们登录某个网站的时候账号和密码就是放在请求体中发送给服务器的。
在ctf比赛中,有时候我们需要构造特定的HTTP请求发送给服务器,从服务器给我们的响应中判断信息,说不定flag就隐藏在里面呢!
HTTP响应的结构
服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。
HTTP响应也由四个部分组成,分别是:
状态行、响应头、空行和响应正文。
状态行
由HTTP协议版本号
, 状态码
(200/302/404/500等), 状态消息
三部分组成。
响应状态码
响应头部
用来说明客户端要使用的一些附加信息,通常不被人注意,是藏flag的好地方。
空行
作用与HTTP请求的一样,用来分开状态行和响应头部
响应正文
服务器返回给客户端的文本信息。
图中Response里面的html部分就是响应正文啦。
如何查看网页发出的HTTP请求?
这里就要用到神奇的Chrome开发者工具了!
Windows / Linux 用户:
按 F12
或者 按 Ctrl+Shift+I
Mac OS用户:
按 Command+Option+I
使用方法也特别简单,点击Network
选项卡,刷新网页即可看到。
CTF例题
没找到题目,但可以看看wp