HTTP处理
HTTP处理
HTTP简介
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议,规定了浏览器与服务端传输信息的格式
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
请求过程
- 首先客户端通过URL向服务端发送数据请求
- 服务端接受客户端的请求解析请求进行处理
- 服务端将处理的结果返回给客户端
- 客户端接收服务端的响应数据进行渲染
代理请求
-
代理服务器接受客户端的请求
-
代理服务器中转客户端的请求发送给服务器
-
服务端向代理进行响应
-
代理服务器将服务端响应数据响应给客户端
请求特点
- 无状态:无论连接多少次,HTTP都不会保存客户端的状态
- 可以使用cookie或者token保持数据信息
- 基于TCP/IP协议作用在应用层80端口
- 请求响应:一次请求一次响应
- 无连接:服务端对客户端的请求响应之后,立马断开链接,两者再无任何信息
- 可以使用websockets保持连接,保证服务端可以主动向客户端发送请求
HTTP格式
请求格式
- 请求首行:包含当前请方式,url,http版本
- 请求头:一大堆的K/V键值对,例如:host,user-agent,referer等
- \r\n:空行
- 请求体:需要传输的数据等
响应格式
- 响应首行:标识HTTP协议版本号,响应的状态码,以及响应状态
- 响应头:一般为K/V键值对标识
- \r\n:空行
- 响应体:响应的数据内容
响应状态码
1xx:服务器已经成功接收到客户端发送的请求
2xx:服务器对请求的数据处理成功
3xx:重定向,需要进一步操作
4xx:客户端操作有误,例如权限不足,没有通过认证,或者访问资源不存在
5xx:服务端错误
Burpsuite使用
抓包
2XX
数据成功进行响应
3XX
数据进行重定向
4XX
访问资源不存在
靶场攻击
来源页伪造
题目需求
安全工程师“墨者”在访问一个网页时,提示只能通过另一个页面跳转的方式访问,这该如何办?
解题思路
- 在HTTP协议中Referer字段告诉服务器从那个页面跳转过来,因此我们可以通过修改Refer字段的内容来完成请求
- 使用burpsuite进行抓包,其次修改数据包再次发送给服务器即可
# 将上述的Referer字段中的value更改为谷歌的域名即可
Referer:www.google.com/index.html
浏览器信息伪造
题目需求
要求用户访问某网页的时候必须以Iphone手机且在2G的网络下才可以进行访问
解题思路
- 在HTTP协议中User-Agent字段标明了用户通过什么客户端的浏览器进行访问,因此我们可以通过修改该字段来完成请求内容
- 在微信6.0中新增NetType识客户端(手机)当前的网络环境,因此我们在User-Agent添加该字段即可
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12A365 MicroMessenger/6.0 NetType/2G
防止访问频率
题目需求
微信对某用户进行投票要求某个用户成为投票第一名
解题思路
- 由于微信且题目要求通过手机微信投票因此我们更改User-Agent为手机微信访问
- 猜测限制访问通过IP地址只允许某个用户投票一次,因此我们可以通过添加HTTP_X_FORWARDED_FOR来更改用户的IP地址
# 修改User-Agent字段为手机微信
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B176 MicroMessenger/4.3.2
# 注意除首字母之外其余字母需要小写
X-Forwarded-For:192.172.§101§.§1§