CTF学习笔记 - Web前置技能之HTTP协议
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一起使用以确保安全性。
请求格式:
服务器响应 401 Unauthorized,要求客户端提供凭证。
客户端发送带有
Authorization
头的请求,格式如下:1
Authorization: Basic <Base64编码后的用户名:密码>
解题思路
题目中给出附件,下载后打开发现为密码字典,推测使用暴力破解的方式绕过HTTP 基本认证。
访问题目页面,发现超链接click
,点击进入新页面,发现需要进行HTTP 基本认证。
进行登录尝试后获取到有用信息:用户名为admin
使用Burp进行抓包,并将请求发送到Intruder
进行暴力破解。
对Base64编码后的用户密码字段进行标记
进入到Payloads界面构造Payload
点击Start attack
按钮进行攻击。
攻击结束后筛选状态码,找到状态码为200的请求,查看响应包,获取到Flag。
五、响应包源代码
题目
HTTP响应包源代码查看
考点
HTTP响应包源代码
在浏览器中按下 F12 打开调试工具后,可以查看HTTP响应包的源代码。
- 切换到 Network选项卡。
- 访问或刷新目标网页,网络请求将会显示在列表中。
- 选择一个请求,点击查看详情。
- 在显示详细信息中,切换到 Response(响应) 标签页,可以看到服务器返回的HTTP响应内容。
解题思路
方法一
按F12打开开发者工具,直接在元素页面即可看到Flag。
方法二
按F12打开开发者工具,进入网络页面。找到主页的请求文件,选中后点击响应页面,即可获得Flag。