目录
第一节 CTF基础知识
(一)简介
(二)竞赛
(三)比赛形式
(四)题目
第二节 Web
(一)目录遍历
(二)PHPINFO
(三)备份文件下载
一、CTF基础知识
1、简介
CTF(C apture T he F lag,夺旗赛)CTF 的前身是传统黑客之间的网络技术比拼游戏,起源于 1996 年第四届 DEFCON,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。
CTF是一种流行的信息安全竞赛形式,其英文名可直译为“夺得Flag”,也可意译为“夺旗赛”。其大致流程是,参赛团队之间通过进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串
或其他内容,并将其提交给主办方,从而夺得分数。为了方便称呼,我们把这样的内容称之为“Flag”。
flag所表示的为目标服务器上存储的一些敏感机密
的信息, 这些信息正常情况下是不能对外暴露的。选手利用目标的一些漏洞,获取到flag,其表示的即为在真实的黑客攻击中窃取到的机密信息。
一般情况下flag拥有固定格式为flag{xxxxx}
,有些比赛会把flag关键词替换,例如我们CTFHub平台的flag为ctfhub{xxxxx}
,利用固定格式来反推flag也是一种常见的解题思路
通常来说CTF是以团队为单位进行参赛。每个团队3-5人(具体根据主办方要求决定),在整个比赛过程中既要每个选手拥有某个方向的漏洞挖掘能力,也要同队选手之间的相互配合。
2、竞赛
理论知识
理论题多见于国内比赛,通常为选择题。包含单选及多选,选手需要根据自己所学的相关理论知识进行作答。最终得出分数。理论部分通常多见于初赛或是初赛之前的海选
Jeopardy-解题
参赛队伍可以通过互联网或者现场网络参与,参数队伍通过与在线环境交互或文件离线分析,解决网络安全技术挑战获取相应分值,类似于 ACM 编程竞赛、信息学奥林匹克赛,根据总分和时间来进行排名。
不同的是这个解题模式一般会设置 一血(First Blood) 、 二血(Second Blood) 、 三血(Third Blood) ,也即最先完成的前三支队伍会获得额外分值,所以这不仅是对首先解出题目的队伍的分值鼓励,也是一种团队能力的间接体现。
当然还有一种流行的计分规则是设置每道题目的初始分数后,根据该题的成功解答队伍数,来逐渐降低该题的分值,也就是说如果解答这道题的人数越多,那么这道题的分值就越低。最后会下降到一个保底分值后便不再下降。一般称之为动态积分
题目类型主要包含 Web 网络攻防 、 RE 逆向工程 、 Pwn 二进制漏洞利用 、 Crypto 密码攻击以及 Misc 安全杂项 这五个类别,个别比赛会根据题目类型进行扩展。
AwD-攻防模式
A ttack w ith D efense(AwD)全称攻防模式,在攻防模式CTF赛制中,参赛队伍连接到同一个网络空间。主办方会预先为每个参赛队分配要防守的主机,该主机称之为GameBox
,每个队伍之间的GameBox配置及漏洞是完全一致
的,选手需要防护自己的GameBox不被攻击的同时挖掘漏洞并攻击对手服务来得分。在AwD中主办方会运行一个名为Checker
的程序定时检测选手的GameBox的运行状态。若检测到状态不对则判定该GameBox宕机,按照规则扣除一定分数。攻防模式CTF赛制可以实时通过得分反映出比赛情况,最终也以得分直接分出胜负,是一种竞争激烈,具有很强观赏性和高度透明性的网络安全赛制。在这种赛制中,不仅仅是比参赛队员的智力和技术,也比体力(因为比赛一般都会持续24至48小时左右),同时也比团队之间的分工配合与合作。
AwD通常仅包含Web
及Pwn
两种类型的题目。每个队伍可能会分到多个GameBox,随着比赛的进行,最早的GameBox可能会下线,同时会上线新的GameBox。
AWP-攻防增强
A ttack D efense P lus(ADP)全称攻防增强模式,在该模式下中,参赛队伍连接到同一个网络空间。主办方会在平台上放置题目,选手需要登录到平台获得题目信息
攻击模式下,平台会给出题目的访问链接,选手按照解题模式做题提交flag即可完成攻击,当完成攻击后, 每轮计算分数时均会计算该题目的攻击得分。
防御模式下,选手需要自行挖掘题目的漏洞,并制作漏洞补丁包上传至平台,之后点击验证。验证时平台会新建一个完全干净的题目环境,使用预置的Exploit进行攻击,若攻击成功当验证通过之后(即已经完成修补),每轮计算分数均会认为该题目已防御。
也就是说,对于每个题目,仅需要攻击成功一次,防御成功一次,该题就可以认为已完成,后续无需进行关注。
ADP通常仅包含Web
及Pwn
两种类型的题目。随着比赛的进行,最早的题目可能会下线,后续也有可能会上线新的题目。
ADP相较于AwD来说,选手无须编写批量攻击脚本,也无需关注题目的环境是否被攻击,是否服务异常等等,要做的只是攻击一次,防御一次,选手可以有更多的时间聚焦于还未完成的题目。从主办方的角度来说,大大减轻了比赛的硬件成本和运维成本。