CTFHub HTTP协议

本文介绍了如何在Linux环境下使用curl命令处理网络请求,包括获取网页内容、处理302跳转、解析Cookie、应对基础认证,并利用开发者工具查看响应包源代码。详细讲解了这些技术在实际问题中的应用和操作技巧。

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

一.请求方式

解题:

使用 Windows 自带的cmd命令行中的 curl命令。

curl -v -X CTFHUB url

输入这个命令,按下回车,所有的服务器返回信息就会打印在下方。在返回的 html 源码中找到 ctfhub{……}即可。

curl 简介

  1. cURL:全称 client URL,客户端 URL 工具。
  2. cURL 是一种常用的命令行工具,主要用来请求 Web 服务器,也可以用来下载文件。
  3. 一般情况下,Linux/Windows/Mac 系统都默认安装了 cURL 指令,所以我们可以直接使用。
curl 命令介绍

curl 命令在 Linux 操作系统中经常来测试网络和 url 的联通性,模拟正常的网络访问。除此之外,curl 还支持包括 HTTP、HTTPS、ftp 等众多协议,还支持 POST、cookies、认证、从指定偏移处下载部分文件等功能。

 curl常用方法

    1.curl url(获取网址的文本信息)

curl www.baidu.com

    2.curl -i url(获取文本的头部及文本信息)

curl -i www.baidu.com

  3.curl -x proxy url(使用代理请求网页内容)

curl -x 0.0.0.0 www.baidu.com

  4.curl -v(获取整个通信过程)

curl -v www.baidu.com

  5.curl -X url(使用特定方法请求网页文本)

curl -X GET www.baidu.com

在本题中就用到了 4,5 两种命令。
要注意这里的-X是大写,而 3 中的 -x是小写。

  6.curl -I url(仅返回头部信息)

curl -I www.baidu.com

 想要了解更多,可以参考Linux curl命令最全详解-优快云博客

二.302跳转

解题:

用在Linux系统里用curl命令,即可得到flag。

curl命令默认不跟随重定向的,所以可以访问,得到flag。

curl url~

HTTP临时重定向:

   HTTP 临时重定向可能会用在站点维护期间的网页跳转或者更改网页链接后为了保留书签让用户能通过以前的链接访问更新维护后的新链接。但是搜索引擎不会记录该新的、临时的链接。

重定向的类型:

状态码    名称               中文描述
300         多种选择        请求的资源可以有多个位置,浏览器可以有多种选择
301         永久移动        请求的资源被永久移动到新链接,浏览器会自动定向到新链接
302         发现               资源被临时移动,客户端还继续使用原有链接
303         查看其他        GET或POST请求查看其他链接
304         未修改            请求的资源未修改,将不会返回任何资源
305         使用代理        所有请求的资源必须通过代理访问
307         临时重定向    使用GET请求临时重定向

  想要了解更多,可以参考

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Redirections.

https://www.runoob.com/http/http-status-codes.html.

三.Cookie

解题:

进入题目

它说只有admin登录才能得到flag

我们使用burp suite工具抓包

看到admin=0,0和1对应的是两个状态,我们把0改成1试一下,点击forward,直接就得到了flag。

什么是Cookie?

Cookie得中文意思是曲奇的意思,就是一种数据文件。类型为“小型文本文件”,Cookie是服务器存储在客户端的一段文本信息,当客户端发送访问请求时服务器会发送给客户端一个cookie并存储,第二次客户端再次发送访问请求时cookie会被包含在Http头文件发送给服务器,浏览器检查到有cookie信息就会默认这是已经验证过的用户,不会进行第二次验证。

 想要了解更多,可以参考

cookie是什么?有什么用?cookie详解,一篇文章彻底搞懂cookie_cookie的作用-优快云博客

浏览器Cookie详解-优快云博客

【教你一招】查看浏览器的Cookie-优快云博客

Cookie和Session的区别与联系_.简述session对象和cookie的区别于联系。-优快云博客

四.基础认证

解题:

首先,打开题目所给界面。这里他给了我们一个密码本

有一个可以点击的选项,正常思路,我们会点击这个click交互键

然后弹出来了一个登陆界面,这里老规矩,打开burpsuit,进行抓包

随便输入用户名和密码,然后进行抓包,发现了Authorization:后面有一串BASE64的编码

尝试进行解码,解码这个base64后,发现是我们刚才输入的用户名和密码,进行了隔开

目前有了密码本但没有用户名的线索,将其发送到重发器重新发包,得到“Do You Know admin”的信息,推测用户名为admin

把抓到的包发送到爆破模块intruder,选择刚才的base64字符串,记住,不要吧basic选上了,选择狙击手。点击payloads

这里又常规的爆破选项,导入密码本。但是切记,因为密码和用户名是base64加密的,所以有效载荷处理这里要手动处理一下

选择添加,添加前缀,这里我们用户名是admin,所以只需要添加前缀,切记加:

添加完前缀,这还不够,再添加一个编码,选择Base64-encode,还有一点,有效载荷处理要取消,不然爆破不出来。

攻击后,找到时长不一样的一项,查看它的响应,即可得flag

HTTP 基础认证

 HTTP 基础认证框架,浏览器(用户)可以提供身份验证凭证给服务端,由服务端发送请求 challenge 来查询。工作流程如下:服务器向客户端返回 401 状态码并在首部提供如何进行验证的信息,其中至少要包括一种查询方式。用户可以通过证明自己的身份在新发送给服务端的请求中添加 Authorization 首部字段来验证。通常凭证信息会被编码或者加密处理。

 想要了解更多,可以参考

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Authentication.

五.响应包源代码

解题:

打开题目给出的链接后,发现是一个贪吃蛇游戏

·题目提示为响应包源代码查看,于是使用开发者工具查看

很容易就找到了flag

什么是响应包?

用户发送的请求包达到服务器后,要去处理该请求,把处理之后的结果发送给用户浏览器,我们将该结果称为响应包,用response表示。
响应包格式:response=状态行(协议/版本 状态码)+消息报头+空行+响应正文(也叫做响应内容,是由HTML+CSS+JS组成的响应正文)

开发者工具

以下是开发者工具的简单使用

 想要了解更多,可以参考

浏览器F12开发者工具高效使用教程-优快云博客








 

     

### CTFHub HTTP协议 请求方法 教程 #### GET 方法 GET 是用于获取指定资源的表示。请求参数通常附加在 URL 后面作为查询字符串的一部分。此方法不应具有副作用,即不会改变服务器上的资源状态。 ```python import requests response = requests.get('http://example.com') print(response.text) ``` #### POST 方法 POST 用来向指定资源提交要处理的数据,比如表单数据或上传文件等。与 GET 不同的是,POST 的数据放在消息体中发送给服务端[^1]。 ```python data = {'key': 'value'} response = requests.post('http://example.com/post', data=data) print(response.text) ``` #### PUT 方法 PUT 类似于 POST,但是它通常用于更新现有资源。如果目标 URI 已经存在,则替换该位置的内容;如果没有则创建新的资源。 ```python data = {'key': 'updated_value'} response = requests.put('http://example.com/resource/1234', data=data) print(response.status_code) ``` #### DELETE 方法 DELETE 请求删除由 URL 所指向的目标资源。成功的操作应该返回 2xx 或者 404 (未找到),其他情况应返回相应的错误码。 ```python response = requests.delete('http://example.com/resource/1234') print(response.status_code) ``` #### HEAD 方法 HEAD 和 GET 十分相似,唯一的区别在于服务器不返回任何实际的消息主体部分,只返回头部信息。这可以用来检查文档是否存在以及最后修改日期等情况而不必下载整个页面。 ```python response = requests.head('http://example.com') print(response.headers['Last-Modified']) ``` #### OPTIONS 方法 OPTIONS 可以询问支持哪些通信选项可用对于特定URL而言。这是跨域资源共享(CORS)预检请求的基础之一。 ```python response = requests.options('http://example.com') print(response.headers['Allow']) # 显示允许的方法列表 ``` #### PATCH 方法 PATCH 提交对资源的部分修改指令集而不是完整的替代版本。这对于增量式的更改非常有用。 ```python data = {"op": "replace", "path": "/name", "value": "New Name"} headers = {'Content-type': 'application/json-patch+json'} response = requests.patch('http://example.com/resource/1234', json=data, headers=headers) print(response.status_code) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值