CTF简介和题目类型简介

CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。已经成为全球范围网络安全圈流行的竞赛形式,2013年全球举办了超过五十场国际性CTF赛事。而DEFCON作为CTF赛制的发源地,DEFCON CTF也成为了全球最高技术水平和影响力的CTF竞赛,类似于CTF赛场中的“世界杯” 。

   CTF作为团队赛,通常以三人为限,要想在比赛中取得胜利,就要求团队中每个人在各种类别的题目中至少精通一类,三人优势互补,取得团队的胜利。同时,准备与参与CTF比赛是一种有效的将计算机科学的离散面聚焦于计算机安全领域的方法。

1.关于赛事流程

CTF的英文名可直译为“夺得Flag”,也可译为”夺旗赛“。大致流程是,参赛团队之间通过进行攻防对抗,程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或者其他内容,并将其提交给主办方,从而夺得分数。为了方便称呼,我们把这样的内容成为”Flag“。

2.关于竞赛模式

       具体可分为以下三类:

(1)解题模式

通过互联网或者现场网络参与,以解决题目的分值和时间来排名,通常用于在线选拔赛。题目主要包括逆向,漏洞挖掘与利用,Web渗透,密码,取证,隐写,安全编程等类别。

(2)攻防模式

参赛队伍在网络空间互相攻击和防守,挖掘网络服务器漏洞并攻击对手服务来得分,补修自身服务漏洞来避免丢分。该模式竞争激烈,观赏性很强且赛制高度透明,比赛不仅仅是参赛队员智力和技术的比拼,也是体力,耐力(比赛一般都会持续48小时以上)和团队之间分工配合能力的考验。

(3)混合模式

结合了上述两种模式特点的赛制,比如参赛队伍通过解题获得一些初始分数,然后通过攻防对抗进行分数增减的比赛,最终以得分高低来判定胜负。

3.题目类别

       主要包含5个大类的题目,即Web,Pwn,Reverse,Crypto和Misc。有些比赛会根据自己的侧重点单独添加某个分类。近年来在一些比赛中出现了混合类型的题目,例如在Web中添加一个二进制程序,需要选手先利用Web的漏洞获取到二进制程序,之后通过逆向或者Pwn等方式获得最终flag。

(1)Web

大部分情况下和网络,Web,HTTP等相关技能有关。主要考察选手对于Web攻防的一些知识技巧。诸如SQL注入,XSS,代码执行,代码审计等常见考点。一般情况下Web题目只会给出一个可以访问的URL,部分会给出附件帮助解题。

(2)Pwn

该类题目重点考察选手对于二进制漏洞的挖掘和利用能力,其考点也通常在堆栈溢出,格式化漏洞,UAF,Double Free等常见的二进制漏洞上/选手需根据题目给出的二进制可执行文件进行逆向分析,找出其中的漏洞并进行利用,编写对应的漏洞攻击脚本,进而对主办方给出的远程服务器进行攻击并获取flag。

(3)Reverse

Re类题目考察选手对密码学相关知识的了解程度。有时也会给出一些加密脚本和密文,根据这些信息逆推出明文。

(4)Misc

Misc意为杂项,即不包含上述分类的题目都会放在这个分类中。题目会给出一个附件,选手下载这些附件进行分析,最终得出flag。

                                                                                                                   赵震宇

                                                                                                                 2022.10.13

### CTF 文件包含类型题目思路 #### PHP本地文件包含漏洞概述 在CTF竞赛中,PHP本地文件包含(Local File Inclusion, LFI)是一种常见的Web安全漏洞。当应用程序允许用户输入控制`include()`、`require()`等函数所加载的文件路径时,攻击者可以通过精心构造请求来读取服务器上的任意文件或执行恶意代码[^1]。 #### 解方法分析 对于存在LFI漏洞的应用程序,通常会提供一个可控参数用于指定要包含的文件名。例如,在给定案例中的两个GET参数之一`page`即被用来动态载入页面内容并最终由`include`语句处理。这意味着如果能够操控这个变量,则可以尝试访问敏感资源甚至远程命令执行环境。 为了成功解决此类挑战: - **理解工作流程**:熟悉目标站点的工作机制以及如何传递数据到后台脚本。 - **探索潜在入口点**:识别哪些地方可能接受外部输入作为文件路径的一部分。 - **测试不同payloads**:基于已知的知识库构建有效的注入字符串,比如利用特殊字符绕过过滤器或者采用特定于操作系统的绝对/相对路径表达方式。 - **验证响应行为**:仔细观察返回的信息以判断是否存在异常情况表明成功的渗透活动。 具体来说,针对提供的参考资料提到的情况,一种可行的技术路线涉及使用PHP伪协议(`php://`)配合HTTP POST请求体发送自定义PHP代码片段至服务端进行即时解释运行[^2]。 ```python import requests url = "http://example.com/vulnerable_page.php" data = "<?php echo file_get_contents('/flag_location'); ?>" params = {'page': 'php://input'} response = requests.post(url, data=data, params=params) print(response.text) ``` 此段Python代码展示了怎样模拟向含有未修复缺陷的服务发起POST请求的过程,其中携带了一个简单的PHP指令去获取假设存储着FLAG的位置的内容,并将其回显出来供参赛选手捕获。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值