学习,熟悉HTTP协议,便于以后进行HTTP重放攻击!
0x 01 HTTP协议
查看HTTP协议
先查看鼠标点击一个链接后,浏览器发出了怎样的HTTP请求。
Chrome浏览器下,按F12进入开发者模式,点击Network后,在页面中随意点击链接测试,出现下图。
上面的news.baidu.com 就是点击新闻后发出的一条信息相关内容,在图中我们大致可以看到 有请求主机,IP地址,请求方式,以及返回的状态码(200)
HTTP请求介绍
http请求由三部分组成,请求行,请求头,请求主体。
下面给出一个实例:
1 POST /login.php HTTP/1.1 // 请求行 包含请求方法,请求地址,协议版本
2 HOST: www.XXX.com // 请求头
3 // 空一行,表示请求头结束
4 username=admin & password=admin // 请求正文 Cookie相关信息
请求方法中GET把请求信息直接标注在URL上,POST多用于提交数据,提交信息在后面的是请求正文中。
常见的请求头如下:
referer: 包含一个URL,用户从该URL代表的页面出发访问当前请求的页面
user-agent: 客户端将它的操作系统,浏览器,和其他属性告诉服务器
Host: 请求主机名和端口号,默认80
Connection: 当前连接是否保持
Accept-Language: 指定接受的自然语言
Cookie: 表示请求者身份
x-forword-for: 代表请求段IP,可以有多个,中间以逗号隔开
HTTP响应介绍
HTTP相应内容如下:
状态码:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受 (200成功)
3xx:重定向--要完成请求必须进行更进一步的操作 (302跳转)
4xx:客户端错误--请求有语法错误或请求无法实现 (404请求资源不存在)
5xx:服务器端错误--服务器未能实现合法的请求 (500 服务器内部错误)
常见HTTP响应头:
Server: WEB服务器名称 如:Server: Apache/1.3.6(Unix)
Content-Type: 正文媒体类型
Content-Length: 正文长度(字节)
Keep-Alive: 保持连接时间
Date: 格林时间
Location: 表示客户端应该到哪里去提取文档,当客户端收到后会再次发送请求
Set-Cookie: 向客户端设置Cookie信息
0x 02 手工模拟HTTP发送
没开启Telnet服务的同学手动百度一下 如何开启Telnet服务,这里不多说了
进入CMD界面开启telnet:
telnet www.baidu.com 80
显示空白黑屏界面,在键盘上同时按“Ctrl”键和“]”键,显示如下界面
欢迎使用 Microsoft Telnet Client
Escape 字符为 'CTRL+]'
Microsoft Telnet>
按“Enter”键 显示空白界面,输入HTTP请求(注意HOST: 后面有个空格)
GET /index.html HTTP/1.1
HOST: www.baidu.com
之后连续按两次“Enter”键,完成HTTP请求发送,显示如下信息
至此,已经成功完成HTTP发送模拟。