CTF入门记录1->CTF基础了解

 

(https://ctf-wiki.org)

00 基础了解

CTF简介 (wolai.com)

00-1 CTF题目类型

  • Web

    大部分情况下和网、Web、HTTP等相关技能有关。

    Web攻防的一些知识技巧。诸如SQL注入、XSS、代码执行、代码审计等等都是很常见的考点。

  • Pwn

    Pwn类题目重点考察选手对于二进制漏洞的挖掘和利用能力,其考点也通常在堆栈溢出、格式化漏洞、UAF、Double Free等常见二进制漏洞上。

    选手需要根据题目中给出的二进制可执行文件进行逆向分析,找出其中的漏洞并进行利用,编写对应的漏洞攻击脚本(Exploit),进而对主办方给出的远程服务器进行攻击并获取flag

    通常来说Pwn类题目给出的远程服务器信息为nc IP_ADDRESS PORT,例如nc 1.2.3.4 4567这种形式,表示在1.2.3.4这个IP的4567端口上运行了该题目

  • Reverse

    Re类题目考察选手逆向工程能力。题目会给出一个可执行二进制文件,有些时候也可能是Android的APK安装包。选手需要逆向给出的程序,分析其程序工作原理。最终根据程序行为等获得flag

  • Crypto

    Crypto类题目考察选手对密码学相关知识的了解程度,诸如RSAAESDES等都是密码学题目的常客。有些时候也会给出一个加密脚本和密文,根据加密流程逆推出明文。

  • Misc

    Misc意为杂项,即不包含在以上分类的题目都会放到这个分类。题目会给出一个附件。选手下载该附件进行分析,最终得出flag 常见的题型有图片隐写、视频隐写、文档隐写、流量分析、协议分析、游戏、IoT相关等等。五花八门,种类繁多。

     

    题目类型ctfhub{c8fde6edc982a5a29d6ae461f1373fe6}

     

    BY-NC-SA协议

00-2竞赛模式

ctfhub{c18732f48a96c40d40a06e74b1305706}

理论知识

理论题多见于国内比赛,通常为选择题。包含单选及多选,

Jeopardy-解题

类似于 ACM 编程竞赛、信息学奥林匹克赛,根据总分和时间来进行排名。

一般会设置 一血(First Blood) 、 二血(Second Blood) 、 三血(Third Blood)

AwD-攻防模式

每个队伍之间的GameBox配置及漏洞是完全一致的,选手需要防护自己的GameBox不被攻击的同时挖掘漏洞并攻击对手服务来得分

RHG-自动化[ AI自动化]

利用人工智能或是AI或是自动化攻击程序来全自动的挖掘并利用漏洞,考验选手对于漏洞理解以及工程化能力。

选手需要编写自动化程序来请求接口获取题目相关信息,该类程序通常称之为bot,在程序中全自动访问并挖掘目标漏洞,完成利用漏洞攻击并获取flag的过程。获取到的flag也由程序自动化提交。RHG因为是由bot全自动进行工作,所以比赛开始即可视为结束。

RW-真实世界

该赛制着重考察选手在面对真实的环境下的漏洞挖掘与利用能力。通常RW模式出题也会围绕着能够应用于真实渗透攻击当中的漏洞

RW常见题型为VM/Docker逃逸、针对浏览器的攻击、针对IoT/Car等设备的攻击,Web类攻击等等

RW模式是以展示效果来作为题目是否完成的准则,所以在RW模式中并不存在Flag

KoH-抢占山头

选手面对的是一个黑盒的目标,需要先挖掘漏洞并利用漏洞控制目标。将自己的队伍标识(队伍名称或是Token之类)写入到指定文件。随后在该主机上进行加固等操作防止其他队伍攻击,主办方会定期去检查标识文件,根据文件中的队伍标识来判定本回合分数给予哪个队伍。

Mix[混合]

混合模式结合了以上多种模式,采取积分制裁定序列。

ctfhub{d452bfcf91e0a1f8e4a1b26a03c59c9c}

00-3 比赛形式

CTF比赛一般分为线上赛和线下赛。通常来说,线上赛多为初赛, 线下赛多为决赛, 但是也不排除直接进行

ctfhub{46ea72b1f8baa828b6fdab002a8ffdff}

01 Web前置技能

01-1 Http协议

01-1-1 请求方式-题目

题目如下:

 

 

题目考点是 HTTP Method

我就去搜了搜Http 请求方法是什么。

HTTP 请求方法 | 菜鸟教程 (runoob.com)

根据 HTTP 标准,HTTP 请求可以使用多种请求方法。

HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。

HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

这次这道题学会了GET请求指定的页面信息,并返回实体主体。

示例域 (example.com)

关于curl命令的用法:

curl 的用法指南 - 阮一峰的网络日志 (ruanyifeng.com)

本题学到curl -v

输出通信的整个过程,用于调试。

curl 控制台请求,参数带中文,返回中文乱码问题小结这篇讲解了使用curl出中文乱码的解决以及curl的本意。

题解页面 请求方式 | CTFHub

题解:

curl -v -X CTFHUB http:.............
//后续视情况而定

我获得的答案flag: ctfhub{e78226f7835380a09fb17d51}

 

01-2-1 302跳转-题目

 

 

 

我的问题在于找不到这个界面,也就不知道它原本是php而不是html;其次是php向html的转换就是302跳转吗?这方面的知识我实在不明白。

1015-解决一部分

好了解决了一部分:在已经打开页面控制器的情况下,访问index.php,但是会发现跳转到index.html,从下图可以看出发生了这种变化,至于具体细节,上面的时间条是什么,后续得了解一下edge的控制器。

 

 

1016-已解决。

解决方法,可以看到页面上有Give me Flag的链接,点击后却跳转到No Flag here! (ctfhub.com)说明发生了302跳转。

 

题解页面 302跳转 | CTFHub

本题考点:HTTP状态码

//-1-1 HTTP状态码 | 菜鸟教程 (runoob.com)概览

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

HTTP状态码的英文为HTTP Status Code。

下面是常见的HTTP状态码:

  • 200 - 请求成功

  • 301 - 资源(网页等)被永久转移到其它URL

  • 302- 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI

  • 404 - 请求的资源(网页等)不存在

  • 500 - 内部服务器错误

 

//-2-2 特别地,关于302状态码;

http302跳转的区别

当你用浏览器点击一个页面链接的时候,随即你看到了一个新的网页展示在浏览器内,在这个过程中,浏览器其实是在不断的接收服务器端的应答(这个应答是服务器端的状态,所以返回码叫状态码),从而来决策下一步来做什么(尽管大部分情况下,你毫无感知的就打开了你想要的页面),这个应答即状态码(status code)

而状态码为301和302就表示重定向。

301表示这个网页已经永久的由服务器的A路径下移动到路径B下,

而302表示临时移动到B路径下,对应到Url地址也即http://baidu.com/file/A/1.htmlhttp://baidu.com/file/B/1.html,当浏览器访问前面一个地址的时候,这个时候服务器会告知浏览器,请到B路径下获取这个文件,随后浏览器重新发起网络请求,请求B路径下的页面,经过渲染,呈现给用户,例如淘宝的例子,请求http://taobao.com,收到302,从而浏览器再次请求http://www.taobao.com获得页面内容。

//-3-3 显性URL和隐性URL

301重定向,也叫“永久性转移“,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向之后的网址。 302跳转,”临时跳转“,搜索引擎在抓取新的内容也将旧的网址替换为重定向之后的网址。 统称为显式跳转

为什么要有301重定向呢?

首先是网址规范化问题 http://www.test.com http://test.com http://www.test.com/index.html http://test.com/index.html 站长是没办法控制别的网站使用哪一个网址连向自己的主页,所以应该在主机服务器上,把所有可能成为主页网址的URL,通过301重定向到选择的主页版本上。 另外是如果站长有诸多个域名: http://test.com http://test.net http://test.org http://test.com.cn http://test.cn 这些域名全部指向一个网站http://test.com 或者 注册了一个很长的域名http://longtestnametest.com,也注册了缩写域名方便记住test.com,其中一个做域名,另一个就可以转向到主域名。

使用301重定向,当网页A用301重定向到网页B时,搜索引擎可以肯定网页A永久的改变位置,或者说实际上不存在了,搜索引擎就会把网页B当作唯一有效目标。

很多时候其他网站会链接到 http://test.com http://www.test.com/index.html http://test.com/index.html 而不是希望的 http://www.test.com 如果使用301跳转,把前三个URL转到最后一个上,PR也就集中在网页 http://www.test.com了。 PR : PageRank 网页排名

本文下面是一些关于301和302的实现,这需要浏览器的分析工具:分析运行时性能入门 - Microsoft Edge Development | Microsoft Docs,到这里疑问基本可以收束了。

上面301、302都是显示跳转,下面多了解一下隐式调转。隐式跳转的实际效果就比如:网址栏中还是 yinshi.weihaitong.xyz,而实际页面就已经是百度的初始页面了。这个到这里回头再深入了解。

解析页面:No Flag here! (ctfhub.com)

题解分析:

可以发现用Give me Flag访问,会自动跳转到index.html,可知发生了302

img

题解1 直接用 curl 访问 index.php 即可得到 flag

curl -v http://..........
即可;
亲身实践,-v可以,不加不行。

解法2(未作

可以挂上 BurpSuite 之后访问 index.php

img

由于做题极其吃力,我去看了看菜鸟教程的HTTP教程

HTTP 简介 | 菜鸟教程 (runoob.com)但是看完总感觉缺了点什么,太理论了。不知道对实际有什么指导。

于是我去搜了搜http实战

此外关于这道题还有一件事:302跳转时怎么被实现的?

搜了一下接结果出来

 1 //php 如何实现302跳转
 2 <?php
 3  
 4 $the_host = $_SERVER['HTTP_HOST'];
 5 if($the_host == 'ieflex.com'){
 6     Header("HTTP/1.1 301 Moved Permanently");
 7     Header("Location: http://www.ieflex.com");
 8     exit;
 9 }
10 ?>
11 //这个就回头再看好了

 

 

posted @ 2021-10-16 14:37  climerecho  阅读(1556)  评论(0编辑  收藏  举报