1.3 PicoCTF实用指南

PicoCTF除了每年举办比赛,还提供了一个提供其历年比赛真题的在线平台。通过这个平台,学习者可以在熟悉CTF比赛题目的同时,了解各种信息安全的知识点。图1-1所示为PicoCTF网站首页。

图1-1 PicoCTF网站首页

1.3.1 注册PicoCTF

初次使用PicoCTF时,需要进行注册。其注册页面如图1-2所示。

图1-2 PicoCTF注册页面

注册成功之后,返回首页就可以看到PicoCTF提供的多种功能,如图1-3所示。

图1-3 PicoCTF提供的多种功能

1.3.2 PicoCTF的题目分类

PicoCTF将所有题目分成了多个大类,这其实也是几乎所有CTF比赛都会采用的方案。因为“术业有专攻”,一个人不可能同时精通所有的网络安全知识体系,所以CTF比赛几乎都以团队形式参赛,由团队成员分别解答自己擅长的题目。

目前PicoCTF已将历年的所有题目进行了分类,如图1-4所示。

图1-4 PicoCTF的题目分类

由图1-4可以发现,这些题目被分成了Web安全、加密、逆向工程、取证、通用技能和二进制渗透6种类型。

Web安全:图1-4中的Web Exploitation,指通过对Web应用程序进行分析和利用来获取敏感信息或实施攻击的过程。在Web安全的CTF比赛中,参赛者需要了解各种Web开发知识和漏洞。

加密:图1-4中的Cryptography,指将信息转换为不可读形式的过程,以保护其机密性。在CTF比赛中,加密通常涉及解密隐藏的信息或破解密码算法。在加密的CTF比赛中参赛者需要了解各种对称加密和非对称加密算法,如AES、RSA等。

逆向工程:图1-4中的Reverse Engineering,指对软件、硬件或其他基础组件进行分析和解构,以了解其内部机制和功能的过程。在CTF比赛中,逆向工程涉及分析与修改二进制文件、反汇编和调试程序等任务。

取证:图1-4中的Forensics,指通过收集、分析和保护数字证据来解决计算机犯罪案件的过程。在CTF比赛中,取证涉及分析给定的数据集,以找到隐藏的信息或解决给定的问题,参赛者需要了解数字取证的基本原理、取证工具和技术,如文件恢复、日志分析和内存取证。

  通用技能:图1-4中的General Skills,是PicoCTF为新手提供入门用的技巧教学题,包含各种CTF比赛中经常用到的技能,包括编程、网络分析、操作系统知识和漏洞利用。这有点像其他CTF比赛中的Misc(杂项),但是PicoCTF中的此类题目普遍比较基础。

  二进制渗透:图1-4中的Binary Exploitation,指对二进制程序进行分析和利用以获取敏感信息或实施攻击的过程,对应其他CTF比赛的PWN题目。在CTF比赛中,参赛者需要分析给定的二进制文件,理解其功能和漏洞,并开发相应的漏洞利用技术。

1.3.3 PicoCTF的题目

PicoCTF的练习界面十分友好,可以通过搜索框直接查找自己感兴趣的题目。例如,要搜索与Java有关的题目,可以使用直接搜索关键词“Java”,如图1-5所示。

图1-5 使用搜索框查找与Java相关的题目

PicoCTF练习界面的左下方按照赛事对题目进行了分类,如果答题者希望能够像参加真实比赛一样答完一整套题目,可以直接选择对应的年份。目前PicoCTF提供的赛事历年题目如图1-6所示。

图1-6 PicoCTF提供的赛事历年题目

对于每一道题目,PicoCTF都给出了十分详细的信息。下面以一道入门题目“Obedient Cat”为例介绍PicoCTF提供信息的方式。在题目列表中,该题的信息简介如图 1-7所示。

图1-7 题目“Obedient Cat”的信息简介

如图1-7所示,这个页面一共给出了5条信息,分别如下。

① 给出了题目的分类,如本题分类为通用技能(General Skills)。

② 给出了题目的分数,一般来说,分数越低,题目越简单。但实际上并不完全如此,不同年份的题目的分数差距很大,答题者在解答不同年份的题目时将这个分数作为简单参考即可。

③ 给出了题目的名称。

④ 给出了已经解答出该题目的人数。

⑤ 给出了题目的好评度。

在图1-7所示页面中单击题目的名称,进入图1-8所示的页面。

图1-8 题目“Obedient Cat”详情页面

在该页面中给出了题目更详细的信息。

作者(AUTHOR)。

题目描述(Description):题目的详细介绍。

线索(Hints):题目的重要提示,同时也可能是网络安全的一个知识点。

下载链接(Download flag):通常是一个下载链接,或者是一个网页链接。

提交Flag(Submit Flag):在题目中找到的Flag可以在这里提交。

以“Obedient Cat”为例,这道题目提供了3条线索,这些线索其实也是PicoCTF的魅力所在。它们一方面给出了题目的提示,另一方面也帮助答题者更好地掌握网络安全的知识点。

这道题的第1条线索给出了这样的提示:“Any hints about entering a command into the Terminal (such as the next one), will start with a '$'... everything after the dollar sign will be typed (or copy and pasted) into your Terminal.”。

翻译过来就是“提示中以$开头的都是要执行的命令,这些内容都是应该在你的终端中输入的”。

这道题的第2条线索给出了这样的提示:“To get the file accessible in your shell, enter the following in the Terminal prompt:  $ wget……”。

翻译过来就是“如果想要在shell中访问这个文件,请在终端的提示符中输入以下内容”。

第3条线索是一条命令“$man cat”。

实际上这3条线索已经给出了题目的解题步骤,显然这道题并非仅仅是测试,更多的是帮助参与者了解Linux答题环境及其常用命令,接下来只需要在Linux操作系统中完成上述操作。

1.3.4 PicoCTF的Linux答题环境

除了使用自己的Linux操作系统,如Kali Linux 2(推荐使用的CTF答题环境),PicoCTF也提供了一个网页版的Linux答题环境供答题者选用。在答题页面中,单击右侧的“Webshell”按钮即可进入该Linux答题环境,如图1-9所示。

图1-9 答题页面的右侧的“Webshell”按钮

使用网页版Linux答题环境前,需要先输入答题者在PicoCTF的用户名和密码。输入正确的用户名和密码后的Linux答题环境,如图1-10所示。

图1-10 PicoCTF提供的Linux答题环境

接下来使用该环境来解答“Obedient Cat”这道题目。首先,在Linux答题环境下输入第2条线索给出的命令,下载Flag文件,如图1-11所示。

图1-11 在Linux答题环境下下载Flag文件

然后,输入第3条线索提供的命令“man cat”。此时系统将给出cat命令的详细使用说明。其实这道题并不是在考试,而是在帮助答题者在实践中掌握常用的Linux命令cat。

之后可以按“q”键退出cat的说明页面。cat是Linux系统中的常用命令,主要用于对文件进行操作。例如,用cat命令显示文件内容。

$ cat filename

上述命令将显示指定文件(filename)的内容。

最后,在Linux答题环境下输入下面的命令,查看刚刚下载的文件。

$ cat flag

成功得到这道题目的Flag,具体如下。

picoCTF{s4n1ty_v3r1f13d_2aa22101}

值得注意的是,PicoCTF比赛中大部分Flag是类似于picoCTF{*******}形式的字符串。

1.3.5 提交Flag

在获得Flag之后,返回“Obedient Cat”题目的详情页面,将Flag的值添加到文本框中,如图1-12所示。

单击“Submit Flag”按钮之后,就可以看到系统提示答题者获得了对应的分数。在系统的题目列表中,已经完成的题目会变成灰色(见图1-13)。

还有一点需要答题者注意的是,从PicoCTF 2022开始,大部分Web题目有了时间限制(见图1-14),不过即使时间结束,答题者也可以答题,只是Web环境需要重启。

图1-12 提交Flag

图1-13 完成的题目会变成灰色

图1-14 时间限制