CTFHUB技能树HTTP协议

本文介绍CTF竞赛中的HTTP基础知识,涵盖HTTP请求与响应流程、状态码含义及常见安全挑战解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先是ctf的各种基础知识啥的就简单了解了解,可以为以后的CTF比赛做一些了解。

首先学习一下题目里面提到的HTTP请求方法。

HTTP工作原理

HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

 HTTP 请求/响应的步骤:

客户端连接到Web服务器->发送Http请求->服务器接受请求并返回HTTP响应->释放连接TCP连接->客户端浏览器解析HTML内容

1、客户端连接到Web服务器

一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,百度一下,你就知道

2、发送HTTP请求

通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

3、服务器接受请求并返回HTTP响应

Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

4、释放连接TCP连接

若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

5、客户端浏览器解析HTML内容

客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

HTTP请求消息Request

客户端发送一个HTTP请求到服务器的请求消息包括以下格式

请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。

HTTP请求消息Response

一般情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文

HTTP的知识看的差不多了就开始第一题

通过bp工具的抓包来查看http的resquest

request 就是请求,题目中写道HTTP Method is GET

我们知道请求中 GET /index.php HTTP/1.1就是请求行,HTTP Method也是GET

Use CTF**B Method, I will give you flag.

将HTTP Method改为CTFHUB

就可以得到flag,复制粘贴任务完成。

302跳转

HTTP临时重定向,继续学习

分类分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误
301Moved Permanently永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302Found临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI

接着开始做题

使用BP工具抓包

send to repeater

点击发送直接得到flag

Cookie欺骗、认证、伪造

cookie欺骗,认证伪造

首先我们先了解什么是cookie

cookie机制是在浏览网页的时候,服务器将你的登录信息,浏览信息等发送给客户端并保存一定的时间。当你下一次访问这个网站的时候,就能读取上一次你的记录

cookie是一段小型的文本数据是由一个名称(Name)、一个值(Value)和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性组成。我们只要伪造了这个信息就可以绕过登录页面,直接登录。

了解的差不多了直接开始

题目说只有admin才可以拿到flag,通过bp抓包

 继续send to repeater

我们可以发现请求当中Cookie当中admin=0也就是admin为假

那么我们将它改为真

 得到flag.

基本认证

根据题目中的链接维基百科应该需要梯子,可以查看其他的csdn的文章

在浏览器当中会让你输入用户名和密码basic的内容就是用户名:密码然后用base64编码加密显示。

Upgrade-Insecure-Requests: 1
Authorization: Basic YWRtaW46

接下来进入题目当中

 题目当中还有一个txt文件

是一个密码表

首先我们随便输入用户名密码用BP抓包

 

 看到WWW-Authenticate: Basic realm="Do u know admin ?"

可以知道账户的用户名为admin

密码应该就在题目所提供的密码表当中了,应该将用户名和密码相组合

就像admin:123456

因为对BP的功能不太熟悉我还在密码表当中把"admin:"一个个加入到密码表当中再base64加密,但是BP中就自带了这种功能。

首先我们先发送到Intruder

 在basic处添加有效负载位置

 类型选择简单清单,把密码单的 密码粘贴进去
 

 增加前缀admin:

 有效负载处理选择编码,base64

接下来开始攻击

 长度和其他的不一样即为唯一正确的答案,再对它进行base64编码的解密

解密后密码如图,输入用户名和密码就拿到了flag

http响应包源代码查看

点开一看贪吃蛇根据题目直接查看源代码,都没用到bp

 

 直接拿到flag

<think>好的,我需要帮助用户了解CTFHub技能树中与POST请求相关的知识和操作。首先,我得回顾一下用户提供的引用内容,看看有哪些相关信息可以利用。引用[1]提到使用Burp Suite抓包和修改请求参数,这可能涉及到POST请求的构造和修改。引用[2]讨论了Gopher伪协议在GET和POST提交中的应用,需要正确设置头部信息。引用[3]强调了HTTP方法的大小写敏感性和返回状态码,比如405和501,这可能与处理POST请求时的错误有关。引用[4]中的URL构造技巧或许在POST请求的参数传递中有用。 接下来,我应该组织这些信息,分步骤讲解POST请求在CTF中的常见操作。首先介绍POST的基础概念,然后讲解如何构造POST请求,比如使用工具和手动方法。接着,可能需要覆盖如何修改请求方法,比如从GET到POST,并处理可能的响应状态码。此外,用户可能对如何绕过某些限制或利用协议特性感兴趣,比如Gopher伪协议或者URL的特殊构造,这部分需要结合引用中的例子详细说明。 还要考虑用户的实际应用场景,比如CTF题目中常见的POST请求挑战类型,如参数注入、数据篡改、头部修改等。需要提供具体的操作步骤,例如使用Burp Suite截获请求、修改方法为POST、添加必要的头部和参数。同时,提醒用户注意常见的错误,比如方法名称的大小写、服务器支持的请求方法,以及如何处理不支持的请求方法导致的错误状态码。 可能还需要补充一些代码示例或命令行操作,比如使用curl发送POST请求,或者在Python中编写脚本自动化处理POST请求。这些内容需要符合用户提到的LaTeX格式要求,比如行内代码用$...$,独立代码块用$$...$$,但实际示例可能需要用代码块展示,如Python或curl命令。 最后,生成相关问题时要围绕POST请求的扩展知识,比如不同工具的对比、常见漏洞类型、状态码处理等,确保问题能够帮助用户深化理解。需要确保回答结构清晰,步骤详细,引用来源正确标注,并且符合用户的中文要求。</think>### CTFHub技能树中POST请求相关操作指南 #### 一、POST请求基础操作 1. **Burp Suite抓包与修改** - 使用Burp Suite拦截HTTP请求后,可修改请求方法为`POST`,添加`Content-Type`头部(如`application/x-www-form-urlencoded`)和请求体参数[^1]。 - 示例请求体: ```http POST /submit HTTP/1.1 Host: ctfhub.com Content-Type: application/x-www-form-urlencoded Content-Length: 15 key=value&flag=1 ``` 2. **CURL命令直接发送POST请求** ```bash curl -X POST http://target.com/api -d "param1=value1&param2=value2" ``` 通过`-d`参数指定请求体,`-X`指定请求方法[^3]。 --- #### 二、关键技巧与注意事项 1. **请求方法规范** - 方法名称需全大写(如`POST`),否则可能返回`405 Method Not Allowed`[^3]。 - 若服务器不支持`POST`方法,会返回`501 Not Implemented`。 2. **伪协议构造请求** 使用`Gopher`协议构造POST请求时,需手动添加完整的HTTP头部: ```text gopher://target.com:80/_POST%20/path%20HTTP/1.1%0D%0AHost:%20target.com%0D%0AContent-Type:%20application/x-www-form-urlencoded%0D%0AContent-Length:%205%0D%0A%0D%0Akey=1 ``` 注意URL编码和换行符`%0D%0A`的添加[^2]。 3. **绕过URL限制** 类似引用[4]中的技巧,可通过`@`符号拼接域名和路径: ```text http://notfound.ctfhub.com@127.0.0.1/flag.php ``` 这会将请求目标解析为`127.0.0.1/flag.php`,但Host头部仍为`notfound.ctfhub.com`[^4]。 --- #### 三、实战场景示例 **题目:修改GET为POST并提交特定参数** 1. 用Burp Suite拦截GET请求,修改首行为`POST /path HTTP/1.1`。 2. 添加头部`Content-Type: application/x-www-form-urlencoded`。 3. 在请求体添加`flag=ctfhub{example}`并发送[^1]。 4. 观察响应状态码: - `200 OK`:提交成功 - `405 Method Not Allowed`:路径不支持POST方法 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值