啥是CTF?新手如何入门CTF?-程序员宅基地

技术标签: 你永远不了CTF的魅力!  java  安全  百度  编程语言  信息安全  

在这里插入图片描述

CTF是啥

CTF 是 Capture The Flag 的简称,中文咱们叫夺旗赛,其本意是西方的一种传统运动。在比赛上两军会互相争夺旗帜,当有一方的旗帜已被敌军夺取,就代表了那一方的战败。在信息安全领域的 CTF 是说,通过各种攻击手法,获取服务器后寻找指定的字段,或者文件中某一个固定格式的字段,这个字段叫做 flag,其形式一般为 flag{xxxxxxxx},提交到裁判机就可以得分。

信息安全的 CTF 的历史可以说很长了,最早起源于 96 年的 DEFCON 全球黑客大会

为啥要参加CTF

入门渗透,那肯定得各种练手对不对?但因为由于 「网络安全法」的颁布,随意扫描他人网站,或非授权渗透测试都有一定的风险。最近也有个新闻:

在这里插入图片描述
说实话,这小伙只是在扫描,攻击都被防火墙拦下了,啥都没弄到,结果还是一样被判刑,可谓是偷鸡不成蚀把米了……
在这里插入图片描述
所以记住千万不要乱扫国内的网站,尤其是教育、政府类网站。但初入门的同学学习渗透测试没有一个对应的环境也是不行的,而常见的靶机对于小白来说太过复杂,很容易不知如何下手。

这个时候 CTF 就非常适合了,CTF 一般是一个题目有一个或几个知识点相互糅合,相对来说目标性比较强。如果想要体会到安全的成就感和趣味性,促进自己边练边学,CTF 就是一个很好的选择。

CTF 的类型

CTF 题目类型一般分为 Web 渗透、RE 逆向、Misc 杂项、PWN 二进制漏洞利用、Crypto 密码破译,有志于渗透测试的同学一开始建议从 Web 渗透的题目开始,辅以 Misc 杂项和 Crypto 密码学。

CTF 主要分为两种模式,一是解题模式。对于 Web 安全来说,会要求你入侵网站或者靶机,攻击成功后系统会显示flag或者在某个目录 文件 数据库寻找 Flag,提交到答题系统得分。逆向工程题目一般形式是破解注册机、动态调试、dump 内存等等。这些题目可以百度或谷歌别人的解题报告( 关键字:CTF writeup)来认识一下。

这种模式的缺点是类似于“应试教育”,当前的趋势是注重出题难、出题偏,没有考虑实际,就跟奥数似的。而且这种模式只有攻击,却没有防守,而在企业中工作更多的还是考虑如何防护的问题,这个时候 AWD 攻防赛模式就应运而生了。

在这里插入图片描述

二是攻防赛,也叫 AWD(Attack With Defense,攻防兼备)模式。你需要在一场比赛里要扮演攻击方和防守方,攻者得分,失守者会被扣分。也就是说,攻击别人的靶机可以获取 Flag 分数时,别人会被扣分,同时你也要保护自己的主机不被别人得分,以防扣分。

这种模式非常激烈,准备要非常充分,手上要有充足的防守方案和 EXP 攻击脚本。我第一次参加这种比赛的时候就被人打惨了QWQ,不过后面参赛越多,积累的经验就会越多。所以说,这种比赛不用慌,多打多学多积累就好了。

CTF 里面也有一血之说,谁第一个交 Flag 能获得分数加成,所以说手快也很重要。不过一般来说是没有别的大佬手快的。

在这里插入图片描述

CTF 和现实渗透的对比

现实的渗透测试会有非常完整的流程,从信息收集、漏洞探测开始,再逐项攻击,很多时候会一无所获。相比之下,CTF 的目标会比较明确,中等难度以下的题目一般都会在题目描述中提示漏洞的发生处,没有提示的话检测点也不会很多,一个个筛查就可以了。

其次,有很多 CTF 题目会有点脱离现实渗透,套路、脑洞比较多,有的知识点并不实用……怎么说呢?

有的时候出题人为了出点新题会把题目设置得脑洞要特别大才能做出来,Misc 安全杂项更是这种题的重灾区。做这种题其实对现实渗透没啥帮助,比如说这道密码题,第一次见的时候头大得一笔,各位看官先猜猜看是啥:

在这里插入图片描述
我反正是看麻了…

做多了 CTF 的同学应该知道,这是「与佛论禅」密码加密,也不知道是谁想出来的……

在这里插入图片描述

类似这种摸不着头脑、要用特别奇怪的姿势或套路做题的题目也屡见不鲜。其实这也一定程度偏离了 CTF 的初衷,我们是要提高自己的安全姿势水平,而不是大开脑洞。

因此较为简单、脑洞略大的 CTF 题仅作扩充知识面就好了。话虽如此,现在 CTF 大赛都已经往实战的方向走了,高水准的 CTF 题目很多都会模拟真实的网站,让你更加有真实渗透的代入感,渗透手法也更加贴近实战。国内比较良心的 CTF 有 DDCTF、安恒杯月赛 CTF 等等。

关于 CTF 赛事的信息可以关注 XCTF 社区或 CTFtime 整理的赛事链接,详请点阅读原文。虽然非常可能在比赛里打不过各位大佬,但是划划水,学习学习知识也是非常不错滴。

在这里插入图片描述

总结

我搜集了一些入门比较可以的 CTF 靶场,想了想,把集合文章放到自己废弃已久的博客上,以后会在博客更新技术文章,这里依然不讲啥技术,说点儿硬硬的经验干货就好了。靶场集合点击链接到浏览器查看:

新手友好的CTF资料靶场整理合集

新手入门的话,在靶场慢慢刷题,对于不会的题目直接百度或者谷歌,都会有很多解题报告,遇到不会的知识点也要善于使用搜索引擎。最好的方法还是加入一个 CTF 小组,大家互相帮助,提高得会更加快。有什么方面需要我说得更加详细的,欢迎留言或者发消息。

最近事情比较多,有点突发状况,文章难产了好久……对各位说声不好意思。
在这里插入图片描述
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/MachineGunJoe/article/details/119779592

智能推荐

java代码动态注入与class文件热加载实现_java 运行时 注入新类-程序员宅基地

文章浏览阅读5.8k次,点赞3次,收藏18次。一、java代码动态注入在本文中,我们将研究如何将Java代码动态加载到正在运行的jvm中。 该代码可能是全新的,或者我们可能想更改程序中某些现有代码的功能。(在开始之前,您可能想知道为什么到底有人会这样做。显而易见的示例是规则引擎之类的东西。规则引擎希望为用户提供添加或更改规则的能力,而不必重新启动规则。您可以通过将DSL脚本作为规则注入规则库来执行此操作,这种方法的真正问题在于,必须对DSL脚本进行解释,使其运行起来极其缓慢。然后可以像程序中的任何其他代码一样编译和运行该程序,效率将提高几个数量级。_java 运行时 注入新类

用pip安装pymongo模块报错:Could not find a version that satisfies the requirement pymongo(from version:)-程序员宅基地

文章浏览阅读10w+次,点赞28次,收藏40次。安装VN.PY时,进行到安装pymongo步骤出现错误Could not find a version that satisfies the requirement pymongo(from version:)_could not find a version that satisfies the requirement pymongo (from versio

YV12,I420,YUV420P的区别-程序员宅基地

文章浏览阅读43次。2019独角兽企业重金招聘Python工程师标准>>> ..._yv12和iyuv的区别

ubuntu安装neo4j数据库-直接安装与docker方式_neo4j: line 418: /data/workspace/datafactory/neo4j-程序员宅基地

文章浏览阅读568次。本文介绍了ubuntu下分别使用源安装和docker安装neo4j的方法添加下载源安装wget -O - https://debian.neo4j.org/neotechnology.gpg.key | sudo apt-key add -echo 'deb https://debian.neo4j.org/repo stable/' | sudo tee /etc/apt/sources...._neo4j: line 418: /data/workspace/datafactory/neo4j/neo4j-community-3.4.5/run

正则表达式(一)——验证电话号码_判断电话号码的正则表达式-程序员宅基地

文章浏览阅读3.3w次。正则表达式:注意:1.比如你要验证电话号码是否正确,要求是:以1开头,第2位是3,5,8,总共11位 正则表达式应该书写成 ^[1]+[3,8]+\d{9}$package com.ld.num;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Telephone {..._判断电话号码的正则表达式

Unity3D项目程序加密-VirboxProtector加壳工具_unity shield加壳-程序员宅基地

文章浏览阅读6k次。各位Unity3D的开发者,你还为你的代码被反编译而头疼, 混淆和加密已经失效,为内存dump代码而烦恼?是否辛苦制作的游戏被盗版被抄袭而烦恼? 是否害怕算法被别人参考要把算法写成C++而费劲周折?快来使用深思数盾外壳保护(Sense Shield Virbox Protector ) 专门处理Unity3D的代码加密和授权保护。 背景: 大家都知道Unit_unity shield加壳

随便推点

ssm常用的注解_ssm框架注解-程序员宅基地

文章浏览阅读2.3k次。@RestController此注解有两个目的。首先他是一个类似于@controller和@Service的构造型注解,能够让类被组件扫描功能发现。但是,与REST最相关在于@RestController会告诉Spring,控制器中所有的处理器方法的返回值都要直接写入响应体中,而不是将值放到模型中并传递给一个视图以便于渲染。作为替代方案就是@Controller加上@Response。@RestControllerpublic class Controller { }@ApiVersi_ssm框架注解

opengl菜单出现乱码_opengl文字显示(二) | 学步园-程序员宅基地

文章浏览阅读355次。Windows系统中,可以使用wglUseFontBitmaps函数来批量的产生显示字符用的显示列表。函数有四个参数:第一个参数是HDC,学过WindowsGDI的朋友应该会熟悉这个。如果没有学过,那也没关系,只要知道调用wglGetCurrentDC函数,就可以得到一个HDC了。具体的情况可以看下面的代码。第二个参数表示第一个要产生的字符,因为我们要产生0到127的字符的显示列表,所以这里填0..._c++上运行opengl,glutcreatewindow汉字报错

MySQL 团队开发规范_group by后面的字段最好是索引列-程序员宅基地

文章浏览阅读83次。数据库对象命名规范数据库对象数据库对象是数据库的组成部分,常见的有以下几种:表(Table )、索引(Index)、视图(View)、图表(Diagram)、缺省值(Default)、规则(Rule)、触发器(Trigger)、存储过程(Stored Procedure)、 用户(User)等。命名规范是指数据库对象如数据库(SCHEMA)、表(TABLE)、索引(INDEX)、约束(CONSTRAINTS)等的命名约定。数据库对象全局命名规范1、命名使用具有意义的英文词汇,词汇中间以下划线_group by后面的字段最好是索引列

Java入门到精通——第十五单元 多态(没有十四哦)_多态技能目标-程序员宅基地

文章浏览阅读67次。第十五单元 多态昨日知识点回顾本单元知识点概述本单元教学目标(Ⅰ)重点知识目标(Ⅱ)能力目标本单元知识详讲15.1 多态15.1.1 概念引入★★★15.1.2 多态的定义★★★15.1.3 多态体的体现★★★★15.1.4 多态的好处★★★★★15.1.5 向上转型★★★★★15.1.6 向下转型★★★★★15.1.7 转型的使用场景★★★★★15.1.8 转型的异常★★★15.2 接口多态的综合案例15.2.1 案例分析★★★15.2.2 案例实现★★★本单元知识总结昨日知识点回顾接口的概念?接_多态技能目标

热点!《北京市电子印章推广应用行动方案(试行)》发布_电子印章推广方案-程序员宅基地

文章浏览阅读220次。12月4日,北京市经济和信息化局、市政务服务管理局、市公安局联合印发《北京市电子印章推广应用行动方案(试行)》(以下简称《行动方案》)。《行动方案》提出,以“统一管理、分步实施、政府带动、并行过渡”为原则,以政务服务领域电子印章应用为突破口,推进电子印章在企业提交可信材料、政府全程在线审批等业务场景中的便捷应用,逐步构建“互联网+”环境下政府管理和服务方式;鼓励政府和企业使用存储在云端的电子印章(简称云章),减少纸质材料和实体印章使用,建立程序更便利、资源更集约的政务服务新模式。《行动方.._电子印章推广方案

Android实现退出整个程序的方法_activity直接退出整个app-程序员宅基地

文章浏览阅读1.3k次。这里采用任务栈管理器的方式,即利用一个单例模式的Activity栈来管理所有Activity。实现步骤 1. 自定义 Application类,储存每一个Activity,并实现关闭所有Activity的操作;import android.app.Activity;import android.app.Application;import java.util.LinkedList;import java.util.List;public class..._activity直接退出整个app

推荐文章

热门文章

相关标签