啥是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

智能推荐

【linu相关】Ubuntu 文件系统相关命令_bantu系统命令-程序员宅基地

文章浏览阅读8k次,点赞4次,收藏35次。linux系统(以Ubuntu系统为例)的文件系统Linux下“/”就是根目录,所有的目录都是有根目录衍生出来的。/是一切目录的起点,如大树的主干。其它的所有目录都是基于树干的枝条或者枝叶。在ubuntu中硬件设备如光驱、软驱、usb设备都将挂载到这颗繁茂的枝干之下,作为文件来管理。_bantu系统命令

有效解决linux后台运行python脚本_sh 脚本后台执行还在输出-程序员宅基地

文章浏览阅读4.4k次。1.sh test.sh &将sh test.sh任务放到后台 ,即使关闭xshell退出当前session依然继续运行,但标准输出和标准错误信息会丢失(缺少的日志的输出)将sh test.sh任务放到后台 ,关闭xshell,对应的任务也跟着停止。2. nohup sh test.sh将sh test.sh任务放到后台,关闭标准输入,终端不再能够接收任何输入(标准输入),重定向标..._sh 脚本后台执行还在输出

每日MySQL之020:使用EXPLAIN查看SQL的执行计划_mysql explain query_cost-程序员宅基地

文章浏览阅读1.2k次。MySQL中要查看执行计划,可以使用EXPLAIN命令,EXPLAIN 使用的对象是 SELECT, DELETE, INSERT, REPLACE, 和 UPDATE 语句。将EXPLAIN换成DESCRIBE也行,两者含义一样,但实际操作中一般用DESCRIBE查看表结构,用EXPLAIN查看执行计划。输出的结果不是图形化的,而是一张表。对于每个SELECT语句中的每个表,EXPLAIN都会返_mysql explain query_cost

【Linux】vimrc 配置方案_linux配置vimrc-程序员宅基地

文章浏览阅读659次。修改 ~/.vimrc 文件(该文件是用户自己vim的配置文件,可随意修改)。我的.vimrc配置。_linux配置vimrc

SpringBoot中mysql的驱动依赖问题_mysql依赖-程序员宅基地

文章浏览阅读6.7k次,点赞5次,收藏14次。springboot中mysql的驱动依赖问题_mysql依赖

Python函数_位置实参位于关键字实参后面-程序员宅基地

文章浏览阅读1.7k次。Python的函数语法:def 函数名(形参列表): //形参列表由一个或者多个形参构成 //由零条到多条可执行语句组成的函数或者pass [return [返回值]]多个形参名之间以英文逗号(,)隔开。谁调用函数谁负责为形参赋值,指定了参数调用的时候肯定需要传参了!为函数添加文档注释:def my_Test(x, y) : ''' 这里是函数说明文..._位置实参位于关键字实参后面

随便推点

网络安全学习--用户和用户组_组或用户名-程序员宅基地

文章浏览阅读1.1k次。文章基于Windows2003服务器系统版本Windows:win200,win2003,win2008r2,win2012Linux:Redhat,CentOS用户每个用户登录系统后,拥有不同的操作权限每个账户有自己唯一的SID(安全标识符)用户SID:S-1-5-21-42342423434-1433343434-500系统SID:S-1-5-21-42342423434-1433343434用户ID:500windows系统管理员administrator的UID是500普_组或用户名

Java注解 编译_Java注解之编译时注解-程序员宅基地

文章浏览阅读427次。新建两个moduleannotation用来定义注解compiler用来编写处理注解的代码这两个module都要选择Java Library 那为什么要拆分两个module呢,因为编译期注解的处理代码是只在代码编译的时候使用的,所以这些代码要和主module分开拆成compiler,但是compiler又依赖于注解,主module也要使用注解。所以就将注解的定义也拆分出来。这样做的好处是可以..._bw.append

mini2440 uart 裸机c-程序员宅基地

文章浏览阅读66次。转载于:http://blog.csdn.net/yx_l128125/article/details/7703653Uart工作原理:数据通信方式为:并行通信与串行通信两种:§并行通信:利用多条数据线将数据的各位同时传送。它的特点是:传输速度快,是用于短距离通信;§串行通信:利用一条数据线将数据一位位地顺序传送。特点是通信线路简单,利用简单的线缆就实现通信,低成本..._mini2440 nand uart 裸机

解决“libboost_thread.so.xxx.xxx.xxx: cannot open shared object file: No such file or directory”问题-程序员宅基地

文章浏览阅读2.8k次。使用boost库的时候,编译没问题,但是运行的时候报“libboost_thread.so.xxx.xxx.xxx: cannot open shared object file: No such file or directory”错误,解决方法如下: 执行:sudo ldconfig /usr/local/boost_xxx_xxx_xxx/stage/lib..._libboost_thread.so

框架设计原理与实战:理解框架的代码重用与模块化_代码框架复用-程序员宅基地

文章浏览阅读119次。什么是框架?它与类库、组件、工具集之间的区别在哪里?框架最初的意义是什么?为什么现在还需要了解框架设计的原理与实践?这几个问题将作为框架的介绍。框架(Framework)是指一个或多个代码文件以及这些文件所依赖的其他资源集合,用来简化开发过程并提供特定功能的工具箱。在计算机编程领域,框架是一种设计模式,提供了一套模板或标准,用于解决常见的编程任务,比如输入/输出、网络通信等。框架有着广泛的应用,包括数据库访问、业务逻辑处理、Web应用开发、多媒体、科学计算、图形用户界面(GUI)等。_代码框架复用

Python微调文本顺序对抗朴素贝叶斯算法垃圾邮件分类机制-程序员宅基地

文章浏览阅读299次。封面图片:《Python可以这样学》,ISBN:9787302456469,董付国,清华大学出版社图书详情(京东):=================关于朴素贝叶斯算法中文垃圾邮件分类,可..._python任调整文本顺序,对抗垃圾邮件检测