CTF学习笔记-Web前置技能之HTTP协议

Intro

本系列文章将记录自己从零开始学习CTF的过程。

文章中的题目来自CTFHub,链接为:https://www.ctfhub.com/#/skilltree

HTTP协议

一、请求方式

题目

HTTP 请求方法, HTTP/1.1协议中共定义了八种方法(也叫动作)来以不同方式操作指定的资源。

考点

HTTP/1.1协议中的八种请求方法:

  • GET:请求指定资源的表示,通常用于读取数据。
  • POST:向服务器提交数据,用于创建或处理资源。
  • HEAD:与 GET 类似,但只返回响应头部,不包含具体内容。
  • PUT:上传或更新服务器上的资源。
  • DELETE:删除服务器上的指定资源。
  • CONNECT:建立到服务器的隧道连接,通常用于 HTTPS 或其他协议的代理。
  • OPTIONS:查询服务器支持的 HTTP 方法,通常用于跨域请求预检。
  • TRACE:回显服务器收到的请求,用于诊断或调试。

解题思路

访问题目页面,给出提示:使用CTF**B方法访问页面。

推测页面中给出的CTF**B方法实际为CTFHUB方法。

使用Burp进行抓包,将GET方法修改为CTFHUB方法。

将修改后的请求放行即可获得Flag。

二、302跳转

题目

HTTP临时重定向

考点

HTTP重定向

HTTP重定向是一种让浏览器自动跳转到新URL的机制,通常使用3xx状态码。常见的有301(永久重定向)和302(临时重定向)。301会将页面权重传递给新URL,适用于资源永久移动;而302则表示临时跳转,不传递权重。

  • 301:永久搬迁,更新URL,搜索引擎传递权重。
  • 302:临时搬迁,继续使用旧URL,搜索引擎不传递权重。

解题思路

访问题目页面,发现可以点击的超链接Give me Flag,点击后跳转到原界面

打开调试工具,查看网络连接信息,发现进行了302临时重定向。

使用Burp劫持重定向请求,发送到Repeater模块当中进行重放。

点击Send发送请求,即可获得Flag。

三、Cookie

题目

Cookie欺骗、认证、伪造

考点

Cookie相关知识

Cookie是存储在浏览器中的小文本文件,用于保存用户会话和偏好。它包含键值对信息,常用于登录状态、用户跟踪,并有属性来控制过期时间、作用域和安全性。

解题思路

访问题目页面,获得提示:只有admin才能获得Flag。

根据题目信息,推测通过修改Cookie来伪造admin身份。

使用HackBar加载index.php页面,发现存在Cookie信息admin=0

将Cookie中admin的状态修改为1,进行提交,即可获得Flag。

四、基础认证

题目

在HTTP中,基本认证(英语:Basic access authentication)是允许http用户代理(如:网页浏览器)在请求时,提供 用户名 和 密码 的一种方式。详情请查看 https://zh.wikipedia.org/wiki/HTTP基本认证

考点

HTTP 基本认证

HTTP基本认证是一种简单的身份验证方式,客户端通过在请求中发送用户名和密码来验证用户身份。这些凭证以Base64编码方式传输,但并不加密,因此通常与HTTPS一起使用以确保安全性。

请求格式:

  1. 服务器响应 401 Unauthorized,要求客户端提供凭证。

  2. 客户端发送带有 Authorization 头的请求,格式如下:

    1
    Authorization: Basic <Base64编码后的用户名:密码>

解题思路

题目中给出附件,下载后打开发现为密码字典,推测使用暴力破解的方式绕过HTTP 基本认证。

访问题目页面,发现超链接click,点击进入新页面,发现需要进行HTTP 基本认证。

进行登录尝试后获取到有用信息:用户名为admin

使用Burp进行抓包,并将请求发送到Intruder进行暴力破解。

对Base64编码后的用户密码字段进行标记

进入到Payloads界面构造Payload

点击Start attack按钮进行攻击。

攻击结束后筛选状态码,找到状态码为200的请求,查看响应包,获取到Flag。

五、响应包源代码

题目

HTTP响应包源代码查看

考点

HTTP响应包源代码

在浏览器中按下 F12 打开调试工具后,可以查看HTTP响应包的源代码。

  1. 切换到 Network选项卡。
  2. 访问或刷新目标网页,网络请求将会显示在列表中。
  3. 选择一个请求,点击查看详情。
  4. 在显示详细信息中,切换到 Response(响应) 标签页,可以看到服务器返回的HTTP响应内容。

解题思路

方法一

按F12打开开发者工具,直接在元素页面即可看到Flag。

方法二

按F12打开开发者工具,进入网络页面。找到主页的请求文件,选中后点击响应页面,即可获得Flag。