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 字段:
 
Authorization: Basic YWFhOmJiYg==
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,没想到直接出来了

本题结束

最新文章

  1. json-lib的使用《二》
  2. css3 -- 属性选择器
  3. poj1511 最短路
  4. 在android market发布个人免费应用的步骤
  5. MySql 在大数量的统计中具体的使用技巧
  6. 使用out来返回多个值
  7. 如何利用putty的密钥登陆
  8. HDU4452Running Rabbits(模拟)
  9. 添加JSTL 1.2 依赖库
  10. 记 suds 模块循环依赖的坑-RuntimeError: maximum recursion depth exceeded
  11. ionic2+Angular ionScroll页面滑动监听
  12. TC358749XBG:HDMI转MIPI CSI芯片简介
  13. 我的第一个python web开发框架(1)——前言
  14. PHP 扩展开发检测清单(扩展开发必读)
  15. 给笔记本更换SSD硬盘
  16. >HTML编辑笔记2
  17. 为Hadoop集群选择合适的硬件配置
  18. python2和3的区别,怎么样做到轻松切换2和3
  19. VAE demo
  20. hdu-1070(水题)

热门文章

  1. JavaScript HTML5事件
  2. 顺利通过EMC实验(11)
  3. HTML入门学习笔记(二)
  4. testview属性之详解
  5. 前端架构gulp与webpack(知识点整理)
  6. Java 多选框的全选、多选、反选(JQuery 实现)
  7. Java中数组的定义与使用(代码+例子)
  8. Mxnet速查_CPU和GPU的mnist预测训练_模型导出_模型导入再预测_导出onnx并预测
  9. Azure DevOps (九) 通过流水线推送镜像到Registry
  10. 【原创】记一次DouPHP站点的RCE实战之旅