CTF入门记录1->CTF基础了解
00 基础了解
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类题目考察选手对
密码学
相关知识的了解程度,诸如RSA
、AES
、DES
等都是密码学题目的常客。有些时候也会给出一个加密脚本和密文,根据加密流程逆推出明文。 -
Misc
Misc意为杂项,即不包含在以上分类的题目都会放到这个分类。题目会给出一个附件。选手下载该附件进行分析,最终得出flag 常见的题型有图片隐写、视频隐写、文档隐写、流量分析、协议分析、游戏、IoT相关等等。五花八门,种类繁多。
题目类型ctfhub{c8fde6edc982a5a29d6ae461f1373fe6}
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 标准,HTTP 请求可以使用多种请求方法。
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
这次这道题学会了GET请求指定的页面信息,并返回实体主体。
关于curl命令的用法:
本题学到curl -v
输出通信的整个过程,用于调试。
题解页面
题解:
curl -v -X CTFHUB http:.............
//后续视情况而定
我获得的答案flag: ctfhub{e78226f7835380a09fb17d51}
01-2-1 302跳转-题目
我的问题在于找不到这个界面,也就不知道它原本是php而不是html;其次是php向html的转换就是302跳转吗?这方面的知识我实在不明白。
1015-解决一部分
好了解决了一部分:在已经打开页面控制器的情况下,访问index.php,但是会发现跳转到index.html,从下图可以看出发生了这种变化,至于具体细节,上面的时间条是什么,后续得了解一下edge的控制器。
1016-已解决。
解决方法,可以看到页面上有
题解页面
本题考点:HTTP状态码
//-1-1
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
HTTP状态码的英文为HTTP Status Code。
下面是常见的HTTP状态码:
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
302- 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误
//-2-2 特别地,关于302状态码;
()
当你用浏览器点击一个页面链接的时候,随即你看到了一个新的网页展示在浏览器内,在这个过程中,浏览器其实是在不断的接收服务器端的应答(这个应答是服务器端的状态,所以返回码叫状态码),从而来决策下一步来做什么(尽管大部分情况下,你毫无感知的就打开了你想要的页面),这个应答即状态码(status code)
而状态码为301和302就表示重定向。
301表示这个网页已经永久的由服务器的A路径下移动到路径B下,
而302表示临时移动到B路径下,对应到Url地址也即
//-3-3
301重定向,也叫“永久性转移“,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向之后的网址。 302跳转,”临时跳转“,搜索引擎在抓取新的内容也将旧的网址替换为重定向之后的网址。 统称为显式跳转
为什么要有301重定向呢?
首先是网址规范化问题
使用301重定向,当网页A用301重定向到网页B时,搜索引擎可以肯定网页A永久的改变位置,或者说实际上不存在了,搜索引擎就会把网页B当作唯一有效目标。
很多时候其他网站会链接到
本文下面是一些关于301和302的实现,这需要浏览器的分析工具:
上面301、302都是显示跳转,下面多了解一下隐式调转。隐式跳转的实际效果就比如:网址栏中还是 yinshi.weihaitong.xyz,而实际页面就已经是百度的初始页面了。这个到这里回头再深入了解。
解析页面:
题解分析:
可以发现用
题解1 直接用 curl 访问 index.php 即可得到 flag
curl -v http://..........
即可;
亲身实践,-v可以,不加不行。
解法2(未作
可以挂上 BurpSuite 之后访问 index.php
由于做题极其吃力,我去看了看菜鸟教程的HTTP教程
于是我去搜了搜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 //这个就回头再看好了