CTFHub-HTTP协议五关刷题解答
CTFHub
开箱即用的CTF学习解决方案
地址:https://www.ctfhub.com/#/skilltree
本次解答一共包括五关,没有先后顺序。
1.技能树一:请求方式
题目描述
打开后得到如下的页面
HTTP方法是GET
使用CTF**B方法,我会给你flag。
提示:如果你得到“HTTP方法不允许” 错误,你应该请求索引index.php。
题目考点
HTTP Method (http请求方法)
解题思路
由题意得知
本题所涉及的知识为HTTP的八种请求方式
起初按网页的文字
尝试用 GET 方式进行解题
但是无解
在查询了有关于HTTP请求方式的相关信息后发现
HTTP支持自定义请求方式
结合“CTF**B”不难联想到
我们应该自定义一个名为“CTFHUB”的HTTP请求方式
故我们用Burp suite进行抓包及改包
改包:更改请求方式GET为CTFHUB
得到的结果如下图所示:
有关知识
序号 |
方法 |
描述 |
1 |
GET |
请求指定的页面信息,并返回实体主体。 |
2 |
HEAD |
类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 |
3 |
POST |
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 |
4 |
PUT |
从客户端向服务器传送的数据取代指定的文档的内容。 |
5 |
DELETE |
请求服务器删除指定的页面。 |
6 |
CONNECT |
HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
7 |
OPTIONS |
允许客户端查看服务器的性能。 |
8 |
TRACE |
回显服务器收到的请求,主要用于测试或诊断。 |
9 |
PATCH |
是对 PUT 方法的补充,用来对已知资源进行局部更新 |
要注意的是:
方法名称是区分大小写的
当某个请求所针对的资源不支持对应的请求方法的时候
服务器应当返回状态码405(Mothod Not Allowed)
当服务器不认识或者不支持对应的请求方法时
应返回状态码501(Not Implemented)
HTTP服务器至少应该实现GET和HEAD/POST方法
其他方法都是可选的
此外除上述方法
特定的HTTP服务器支持扩展自定义的方法
另解
第二解法,利用 curl 命令对本题求解
在命令行中输入:
curl -v -X CTFHUB http://challenge-aeda8a453e8c041f.sandbox.ctfhub.com:10080/index.php
得到如下的结果:
curl 的相关用法:
http://www.ruanyifeng.com/blog/2019/09/curl-reference.html
本题结束
2.技能树二:302跳转
题目描述
打开后得到
题目考点
HTTP状态码
解题思路
由题意得知
本题涉及的知识点为网页的302跳转
当我们想前往 index.php 的时候
网站自动跳转到index.html
故我们用Burp suite进行抓包
发送到intruder
直接点击 Go 即可得到flag值。
有关知识
301 redirect: 301 代表永久性转移(Permanently Moved)
302 redirect: 302 代表暂时性转移(Temporarily Moved )
HTTP状态码301和302详解:
https://www.jianshu.com/p/995a3000f7d6
本题结束
3.技能树三:cookie
题目描述
打开后得到如下界面
题目考点
Cookie欺骗、认证、伪造
解题思路
按F12,在cookie设置中将 admin = 0 改为 admin = 1,刷新页面,得到flag值
或者抓包 改包后放包就可以了
有关知识
cookie:
在网站中,http请求是无状态的
也就是说即使第一次和服务器连接后并且登录成功后
第二次请求服务器依然不能知道当前请求是哪个用户
cookie的出现就是为了解决这个问题
第一次登录后服务器返回一些数据(cookie)给浏览器
然后浏览器保存在本地
当该用户发送第二次请求的时候
就会自动的把上次请求存储的cookie数据自动的携带给服务器
服务器通过浏览器携带的数据就能判断当前用户是哪个了
cookie存储的数据量有限
不同的浏览器有不同的存储大小
但一般不超过4KB
因此使用cookie只能存储一些小量的数据
cookie和session的关系与区别:
https://juejin.cn/post/6844903575684907016
本题结束
4.技能树四:基础认证
题目考点
HTTP 基础认证
爆破
题目分析
本题考察了在HTTP中对于基础认证的一些知识
要求使用爆破的方法来获得基础认证的账号密码
之后登陆获得flag
解题过程
访问 /flag 发现需要登录
挂上 BurpSuite 的代理
随便输个账号密码
(比如: 账号aaa 密码 bbb)访问
查看 HTTP 响应报文:
得到提示 do u konw admin ?
于是猜测账号是 admin
那么接下来就只需要爆破密码了
注意看到 HTTP 请求头部的 Authorization 字段:
|
Basic 表示是「基础认证」
后面的 YWFhOmJiYg== 用 base64 解码后是 aaa:bbb
也就是我们之前输入的 账号:密码
使用 BurpSuite 进行基础认证爆破
将报文发送到 Intruder
将 Basic 后面 base64 部分添加为 payload position
在 Payloads 选项卡下,选择 Payload Type 为 SimpleList
然后在 Payload Options 中点击 load 加载密码字典
Payload Processing -> Add-> Add Prefix(添加前缀)-> 输入 admin:
Payload Processing -> Add-> Encode(添加一个编码方式)-> 选择 Base64 Encode
Payload Encode 取消勾选的 URL-encode
不然你会看到 base64 之后的 = 会被转成 %3d
你就算爆破到天荒地老也不会出来
Start Attack ,然后按 Status 排序,看到状态码出现 200 的,即爆破成功
查看 Response 得到 flag
本题结束
5.技能树五:响应包源代码查看
题目描述与分析
登入解题页面,输入参数点击开始,发现是贪吃蛇页面
解题过程
按住F12,查看源码,发现flag,没想到直接出来了
本题结束
CTFHub-HTTP协议五关刷题解答的更多相关文章
- 牛客网Java刷题知识点之UDP协议是否支持HTTP和HTTPS协议?为什么?TCP协议支持吗?
不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 ...
- 手把手教你用C++ 写ACM自动刷题神器(冲入HDU首页)
转载注明原地址:http://blog.csdn.net/nk_test/article/details/49497017 少年,作为苦练ACM,通宵刷题的你 是不是想着有一天能够荣登各大OJ榜首,俯 ...
- SQL Labs刷题补坑记录(less1-less30)
补坑加1,这几天快速刷一下sqllabs 来巩固下sql注入基础吧,也算是把很久以前没刷的过一遍,do it! 第一部分: LESS1: 直接报错,有回显的注入, http://localhost/s ...
- [BUUCTF-Pwn]刷题记录1
[BUUCTF-Pwn]刷题记录1 力争从今天(2021.3.23)开始每日至少一道吧--在这里记录一些栈相关的题目. 最近更新(2021.5.8) 如果我的解题步骤中有不正确的理解或不恰当的表述,希 ...
- 【BZOJ-4590】自动刷题机 二分 + 判定
4590: [Shoi2015]自动刷题机 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 156 Solved: 63[Submit][Status ...
- NOI题库分治算法刷题记录
今天晚自习机房刷题,有一道题最终WA掉两组,极其不爽,晚上回家补完作业欣然搞定它,特意来写篇博文来记录下 (最想吐槽的是这个叫做分治的分类,里面的题目真的需要分治吗...) 先来说下分治法 分治法的设 ...
- BZOJ4590 自动刷题机
Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动 刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法,然后开始写 ...
- HDU 自动刷题机 Auto AC (轻轻松松进入HDU首页)
前言: 在写这篇文章之前,首先感谢给我思路以及帮助过我的学长们 以下4篇博客都是学长原创,其中有很多有用的,值得学习的东西,希望能够帮到大家! 1.手把手教你用C++ 写ACM自动刷题神器(冲入HDU ...
- PAT甲级训练刷题代码记录
刷题链接:https://www.patest.cn/contests/pat-a-practise 1001 #include <iostream> #include <stdio ...
随机推荐
- MySQL碎片整理小节--实例演示
MYSQL之磁盘碎片整理 清澈,细流涓涓的爱 数据库引擎以InnoDB为主 1.磁盘碎片是什么 InnoDB表的数据存储在页中,每个页可以存放多条记录,这些记录以树形结构组织,这棵树称为B+树. ...
- docker 容器简单使用
文章目录 docker简介 docker容器简单使用 1.HelloWorld 2.运行交互式的容器 3.启动容器(后台模式) 安装docker容器的博文有很多这里就不做过多赘述了,另外如果不想安装d ...
- 六、cadence叠层和布线前规则设置详细步骤
一.叠层设置 1.颜色设置 2.层叠设置setup-cross section,如下图: 3.布线规则设置 a>线宽设置 b>添加差分对logic-Assign Differenital ...
- HTTP1.1、HTTP2、HTTP3 演变
推荐阅读:https://www.cnblogs.com/zwtblog/tag/计算机网络/ 目录 HTTP 基本概念 HTTP/1.1 相⽐ HTTP/1.0 提⾼了什么性能? HTTP/1.1如 ...
- 【小程序开发】 点击button按钮,引导用户授权
一. 前言 小程序官方文档,上面说明 wx.getUserInfo(OBJECT) 注意:此接口有调整,使用该接口将不再出现授权弹窗,请使用 <button open-type="ge ...
- java中downcast向下转型到底有什么用
What is the point of downcast? 当一个方法只有子类才有,马克-to-win:不是说基类和子类都有,开始时又是基类指针指向派生类,这时就需要downcast, see th ...
- 将java的对象或集合转成json形式字符串
将java的对象或集合转成json形式字符串: json的转换插件是通过java的一些工具,直接将java对象或集合转换成json字符串. 常用的json转换工具有如下几种: 1)jsonlib 需要 ...
- vue行内动态添加样式或者动态添加类名
还是记录一下吧(๑•ᴗ•๑) <li :style="{backgroundImage:`url(${item.pic})`}" @click="chooseVip ...
- C# 一个基于.NET Core3.1的开源项目帮你彻底搞懂WPF框架Prism
--概述 这个项目演示了如何在WPF中使用各种Prism功能的示例.如果您刚刚开始使用Prism,建议您从第一个示例开始,按顺序从列表中开始.每个示例都基于前一个示例的概念. 此项目平台框架:.NET ...
- Python接口自动化——文件上传/下载接口
〇.前言 文件上传/下载接口与普通接口类似,但是有细微的区别. 如果需要发送文件到服务器,例如:上传文档.图片.视频等,就需要发送二进制数据,上传文件一般使用的都是 Content-Type: mul ...