CTFHUB靶场 HTTP协议——请求方式详解

0 阅读4分钟

HTTP协议核心原理

HTTP(超文本传输协议,HyperText Transfer Protocol)是基于 TCP/IP 的应用层协议,核心作用是规范客户端(浏览器 /curl/Burp)与 Web 服务器之间的超文本数据传输规则,也是 CTFHUB HTTP 系列题目的底层考察依据。 HTTP 协议的核心特性可概括为:无连接(HTTP/1.0)/ 长连接(HTTP/1.1+)、无状态、明文传输、请求 - 响应模型,以下从核心模型、协议结构、请求方法、状态码、版本特性5 个核心维度梳理原理,同时标注 CTFHUB 高频考点关联点。

一、HTTP 核心通信模型:请求 - 响应模型

HTTP 是严格的客户端主动发起,服务器被动响应的单向通信模型,无服务器主动推送给客户端的能力(HTTP/2 的服务器推送是扩展特性,非原生),也是所有 HTTP 题目的基础通信逻辑:

1.客户端先与服务器建立TCP 连接(HTTP 基于 TCP,默认端口 80;HTTPS 是 HTTP+TLS,默认 443); 2.客户端构造并发送HTTP 请求报文到服务器; 3.服务器解析请求报文,处理业务逻辑(如校验请求方法、解析参数、查询数据库); 4.服务器构造并返回HTTP 响应报文给客户端; 5.连接处理:HTTP/1.0 默认关闭 TCP 连接;HTTP/1.1 + 默认开启Keep-Alive长连接,可复用连接处理多个请求,直到超时 / 主动关闭。

二、HTTP 协议的核心结构:请求报文 + 响应报文

HTTP 的通信本质是客户端与服务器之间传输标准化的文本报文,报文为纯文本格式(可直接抓包查看,如 Burp Suite),分为请求报文和响应报文,二者结构是 CTFHUB 的高频基础考点(如修改请求方法、请求头、请求体)。

1. HTTP 请求报文(客户端→服务器)

由请求行 + 请求头 + 空行 + 请求体4 部分组成,空行是必选(用于分隔请求头和请求体,标志请求头结束),请求体可选(如 GET 请求无请求体,POST 请求有)。

# 示例:POST请求报文
POST /login.php HTTP/1.1  # 请求行
Host: www.ctfhub.com      # 请求头
User-Agent: curl/7.88.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

username=admin&password=123456  # 请求体

请求行(核心,CTFHUB 请求方法题的核心考点):请求方法 + 请求路径 + 协议版本,三者用空格分隔,末尾加\r\n; 例:CTFHUB /index.php HTTP/1.1(自定义请求方法,对应 CTFHUB「请求方法」题目); 请求头:以键: 值格式存在的键值对,每行一个,用于传递请求的附加信息(如客户端信息、请求参数、认证信息); 常见请求头:Host(必选,指定目标域名 / 端口)、User-Agent(客户端标识)、Referer(请求来源)、Cookie(会话信息)、Content-Type(请求体格式); 空行:仅\r\n,必选,服务器通过空行识别请求头结束; 请求体:承载请求的实际数据,仅 POST/PUT/PATCH 等方法有,格式由Content-Type指定(如表单格式、JSON 格式);

考点

1. 「自定义请求方法」的识别与调用: 目标服务器会校验请求的Method字段,仅接受特定自定义方法(比如题目要求用CTFHUB/TEST/FLAG等非标准方法),才会返回 Flag; 你需要用curl -X 自定义方法 目标URL(或 Burp Suite 修改请求行)来满足条件。

2. 「HTTP 标准方法」的特性利用 部分题目会考察标准方法的特性:

比如OPTIONS方法:可用于探测服务器支持的请求方法(题目可能要求用OPTIONS获取允许的方法列表,再用指定方法请求); 比如PUT方法:若服务器开启了 PUT 方法,可上传恶意文件(但这类属于 “文件上传” 考点的延伸)。

3. 请求方法的语法规范 极个别题目会设置 “方法名的模糊匹配”:

比如服务器校验方法名时存在漏洞(如只匹配开头字符),用CTFHUBxxx也能触发正确响应; 或需要用TRACE方法回显请求内容,获取隐藏的 Flag。

通过教程

一.使用burp suite

打开链接 在这里插入图片描述 **加粗样式 **

根据题目提示来看,要将请求头修改,打开bp

在这里插入图片描述

右键选择发送到Repeater

在这里插入图片描述

将请求头修改为CTFHUB,点击发送

在这里插入图片描述

将flag上传即可

在这里插入图片描述 在这里插入图片描述

二.使用curl命令

简介:

curl(全称 Client URL)是一个命令行工具,也是一个功能强大的库(libcurl),核心作用是在客户端和服务器之间传输数据,支持 HTTP/HTTPS/FTP/SCP 等数十种协议。它的本质是模拟客户端发起网络请求,并接收服务器响应的过程。

做题步骤:

curl -v -X http://challenge-2e99d6cdf16a5a60.sandbox.ctfhub.com:10800/index.php

-v:全称--verbose,开启详细输出模式,会打印出请求的完整过程(包括 DNS 解析、TCP/TLS 握手、请求头、响应头、响应体等原始数据),用于调试网络请求。

-X:-X是--request的简写,作用是自定义 HTTP 请求方法;

CTFHUB:这里指定的自定义请求方法名(HTTP 标准方法是 GET/POST/PUT 等,但 HTTP 协议允许自定义方法名)

在这里插入图片描述

获取flag