从零开始学习CTF——CTF是什么

news2024/11/16 23:38:38

引言:

从2019年10月开始接触CTF,学习了sql注入、文件包含等web知识点,但都是只知道知识点却实用不上,后来在刷CTF题才发现知识点的使用方法,知道在哪里使用,哪里容易出漏洞,可是在挖src漏洞中还是很迷漫,学了快一年还是没挖过一条src漏洞。这一系列是把自己学习的CTF的过程详细写出来,方便大家学习时可以参考。


一、CTF简介

简介

中文一般译作夺旗赛(对大部分新手也可以叫签到赛),在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式
CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式

竞赛模式

  • 解题模式:
    在解题模式CTF赛制中,参赛队伍可以通过互联网或者现场网络参与,这种模式的CTF竞赛ACM编程竞赛信息学奥赛比较类似,以解决网络安全技术挑战题目的分值时间来排名,通常用于在线选拔赛。题目主要包含逆向漏洞挖掘与利用Web渗透密码、取、隐安全编程等类别。
  • 攻防模式:
    在攻防模式CTF赛制中,参赛队伍在网络空间互相进行攻击防守,挖掘网络服务漏洞并攻击对手服务得分,修补自身服务漏洞进行防御来避免丢分。攻防模式CTF赛制可以实时通过得分反映出比赛情况,最终也以得分直接分出胜负,是一种竞争激烈,具有很强观赏性和高度透明性的网络安全赛制。在这种赛制中,不仅仅是比参赛队员的智力技术,也比体力(因为比赛一般都会持续48小时及以上),同时也比团队之间的分工配合与合作。
  • 混合模式:
    结合了解题模式与攻防模式CTF赛制,比如参赛队伍通过解题可以获取一些初始分数,然后通过攻防对抗进行得分增减的零和游戏,最终以得分高低分出胜负。采用混合模式CTF赛制的典型代表如iCTF国际CTF竞赛。

总结

一般大型比赛大都是i春秋承办的,以小组的形式比赛,分预选赛和总决赛。

  • 预选赛
    都是线上比赛,比赛形式几乎都是解题模式。进入官方提供的网站,登录账号密码后会到一个页面,题目按类别分类(后续会讲有什么类别),点击后提供题目链接题目信息题目提示flag(答案)提交,提交后会得到分数。其中,一血、二血、三血拿的分数比较高,后面答该题的队伍拿的分数就一样了,答题的队伍越少,分数就越多,然后按分数排名,确定进入决赛的队伍。

如:一道签到题,开始定的分为500,当有队伍提交正确的flag,那么分数就会下降,下降到470/450这样的,人数越多,分数下降幅度越大。而一血二血三血获得分数会高于后续答题正确的

  • 总决赛
    几乎都是线下赛,进行混合模式,因为攻防模式的题目容易出现易守难攻比速度节题这种学习不到知识的问题,也因为这样,大部分的总决赛都是以逆向为主,很容易变成逆行大赛。那么像web选手去干吗呢?喝茶打杂去吧!刚学没多久,又比较懒,关于总决赛的都是在网上获取信息的,想了解详细的参考
    第五届XCTF总决赛的赛制以及新型攻防赛题之探索

二、题目分类

题目一般为6大类:

1.Web(网络安全)

  • Web是CTF竞赛中主要的题型之一,题目涉及到许多常见的WEB漏洞,诸如XSS文件包含代码执行上传漏洞SQL注入。也有一些简单的关于网络基础知识的考察,例如返回包、TCP-IP、数据包内容构造。可以说题目环境比较接近真实环境
  • 所需知识点:PHP、Python、SQL(以mysql为主)、TCP-IP、linux命令、html、javascript等。

2.MISC(安全杂项)

  • MISC是大型CTF竞赛的题目难度很大,是一个可以拉开分数的类型,而在小型竞赛和题库中却难度不大。题目涉及隐写术流量分析电子取证人肉搜索数据分析大数据统计等等,覆盖面比较广,主要考查参赛选手的各种基础综合知识。
  • 所需知识点:熟悉使用众多隐写工具、流量审查工具、了解编码等。

3.Crypto(密码学)

  • 主要包括古典密码学现代密码学两部分内容,古典密码学趣味性强,种类繁多,现代密码学安全性高,对算法理解的要求较高。
  • 所需知识点:矩阵、数论、古典密码学、算法等。

4.Reverse(逆向)

  • 题目涉及到软件逆向破解技术等,要求有较强的反汇编反编译扎实功底。主要考查参赛选手的逆向分析能力。
  • 所需知识点:汇编语言加密与解密常见反编译工具

5.PWN(二进制安全)

  • PWN在黑客俚语中代表着攻破,取得权限,在CTF比赛中它代表着溢出类的题目,其中常见类型溢出漏洞有栈溢出堆溢出。主要考察参数选手对漏洞的利用能力
  • 所需知识点:C,OD+IDA,数据结构,操作系统

6.Mobile(移动安全)

  • 主要介绍了安卓逆向中的常用工具和主要题型,安卓逆向常常需要一定的安卓开发知识,iOS 逆向题目在 CTF 竞赛中较少出现,因此不作过多介绍。

7.(区块链)

-近来多个CTF比赛均出现区块链题目,区块链应用越来越成为热门应用,在未来区块链会成为一个重点。因为没有接触过,这里不详细讲。


三、怎么入门

入门这一块是我们这些新手的一道大大的门槛,很多人都是不知道怎么入门。

个人入门步骤

1.确定方向

一般分为两个方向
A 方向:PWN+Reverse+Crypto 随机搭配
B 方向:Web+Misc 组合
Misc 所有人都可以做

入门知识:
都要学的内容:Windows 基础、Linux 基础、计算机组成原理、操作系统原理、网络协议分析
A 方向:IDA 工具使用(fs 插件)、逆向工程、密码学、缓冲区溢出等
B 方向:Web 安全、网络安全、内网渗透、数据库安全等前10的安全漏洞

2.怎么刷题

刷题非常重要,很多人在其他ctf入门教程中都可以看到刷题是第一步,也是进阶的重要一步,所以刷题非常重要,可是刷题也是需要有技巧的。

例题1:bugku中的web2

打开题目发现一堆笑脸疯狂向你怼来,而且速度越来越快,那么这一题怎么做呢?
web2
这一题考察的是信息收集。在Chrome(谷歌浏览器)点击f12,就可以打开控制台,可以看见其中有一条

<!--flag KEY{Web-2-bugKssNNikls9100}-->

web2
这一句是什么意思,就是把答案告诉你了,你可以把KEY{Web-2-bugKssNNikls9100}提交到输入框就可以获得分数了。
web2
总结
提交完flag后要做什么呢?这时你就要看这一题考察的是什么?控制台,那么控制台又是什么呢?要是知道就做下一题,如果不知道那么我就谷歌(什么是网页控制台),也可以百度,然后找到一篇知乎的回答Chrome 按下F12之后出现的功能是做什么用的?
在记住后看这一知识点难不难,自己能不能掌握,如果怕忘记,那你就记笔记,可以用印象笔记有道云笔记,推荐使用印象笔记,因为它有多级分层,也没必要买会员,它送的那点容量只要不放视频或则图片不要放太多,一个月是用不到30m的。

再来一题了解一下

例题2:bugku中的计算机

打开题目可以看见是个加法,18+91=109,可是我却只能输入一个1,这是为什么呢?
在这里插入图片描述
打开控制台看了一下,发现一个很特殊属性maxlength,那么我就谷歌一下maxlength是什么东西。

查询结果发现,maxlength是一个input元素中的用来限制字符数的,那我们就尅改一下,把他改成3、4之类的数值,只要能容纳我的答案就行了。输入后就可以获得flag了。

总结
这一题考察的是HTMLinput元素的maxlength属性,这时你就可以去把HTML学习一下了,可以试着怎么写网站,哪怕是最普通的也可以,学完以后做到关于HTML相关知识点的时候你就会很快找到哪里有问题。

3.以练促赛,以赛养练

选择一场已经存在Writeup的比赛或者参加一场最新的CTF比赛。
总结解题过程,最好能写一写博客之类的。

4.推荐平台

极力推荐bugku,其他的后面慢慢来,先把bugku做好,然后在做攻防世界,你就会跨入进阶的门槛了。

5.工具收集

不要先去下载别人推荐的工具,反正你是不会去学的,一定要在解题的过程中寻找,那样你回加深印象,也能直接总结一套经验出来。


四、编程

很多人会纠结到底要不要深入编程。不要太深入,差不多就可以了,对照文档就可以写出程序就差不多了且能看得懂就好了,因为每个语言都是学不完的,一直在更新,如果过分专注于一个语言,安全知识就挺容易漏下的。或则是针对一些热门的编程进行深入,比如PHP、python、java之类的,其中PHP可以说是必学项目,如果可以的话,把这门语言学透,那么代码审计一点压力都没有。

上面都是个人想法,怎么选都要靠自己决定,要不要深入、深入哪一门都是问题,一定要考虑清楚再下手,别等下学了一半就改变方向,这是学习的大忌,因为你学其它的也会这样,除非是你发现这个不是很适合你的发展。


五、一些不错的资源

整理了一下题型,因为篇幅有限,有需要的可以评论区评论1,或者关注后自取哦~

总结

刷题刷题刷题最重要的是刷题,,不会就看别人的Writeup,不要怕做不出,刷题一开始是很无聊的,但这是学习的过程,如果不做就永远不会。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/799210.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

勘探开发人工智能应用:测井岩相识别

1 测井岩相识别 1.1 简介 岩相识别是最基础的工作,能够获得地层岩石物理特性的直观认识,进而帮助实时钻井、地质评价和储层建模。 地球物理测井使用特定的设备,观测井眼内不同深度地层的声学特性、电学特性、放射性、热力学特性等地球物理特性。通过确定地球物理测井采集的…

前端面试题 —— Vue (二)

目录 一、过滤器的作用&#xff0c;如何实现一个过滤器 二、v-model 是如何实现的&#xff0c;语法糖实际是什么&#xff1f; 三、$nextTick 原理及作用 四、Vue 中给 data 中的对象属性添加一个新的属性时会发生什么&#xff1f;如何解决&#xff1f; 五、简述 mixin、ex…

【C++进阶】:多态

多态 一.概念二.多态的定义和实现1.简单使用2.虚函数重写的两个例外1.协变2.析构函数的重写 3. C11 override 和 final4.重载&#xff0c;重定义&#xff0c;重写对比 三.多态的原理1.虚函数表2.总结3.静态绑定和动态绑定 四.单继承和多继承1.单继承2.多继承1.多继承的虚表2.多…

【代码随想录day21】二叉树的最近公共祖先

题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可以是它…

java对象的强引用,弱引用,软引用,虚引用

前言:java对象在java虚拟机中的生存状态&#xff0c;面试可能会有人问道&#xff0c;了解一下 这里大量引用 《疯狂Java讲义第4版》 书中的内容

基于SpringBoot+Vue的家政服务管理平台设计与实现(源码+LW+部署文档等)

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

h3c irf简单配置案例

配置以双线连接为例&#xff0c;注意配置步骤不能颠倒。 SW1配置&#xff1a; 1.将设备优先级调整为32&#xff08;1-32&#xff09;&#xff0c;确保该设备被选举为Master&#xff08;主设备&#xff09; [SW1]irf member 1 priority 32 2.关闭要加入的IRF的物理端口。 [SW1…

基于Web的智慧景区GIS三维可视化运营系统

随着人民生活水平的提高和旅游产品的丰富多样&#xff0c;我国人民对于旅游的需求逐渐从“走过场”转变为“品质体验”。 建设背景 随着互联网、大数据、人工智能等新技术在旅游领域的应用&#xff0c;以数字化、网络化、智能化为特征的智慧旅游成为旅游业高质量发展新动能。…

【css】小众

纯CSS实现四种方式文本反差色效果 mix-blend-mode: difference; clip-path&#xff1b; background-clip: text, padding-box outline 是绘制于元素周围的一条线&#xff0c;位于边框边缘的外围&#xff0c;可起到突出元素的作用。 css 样式之 filter 滤镜属性 用法与示例 使…

OpenGL Metal Shader 编程:解决图片拉伸变形问题

前面发了一些关于 Shader 编程的文章&#xff0c;有读者反馈太碎片化了&#xff0c;希望这里能整理出来一个系列&#xff0c;方便系统的学习一下 Shader 编程。 由于主流的 Shader 编程网站&#xff0c;如 ShaderToy, gl-transitions 都是基于 GLSL 开发 Shader &#xff0c;加…

基于深度学习的CCPD车牌检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于CCPD数据集的高精度车牌检测系统可用于日常生活中检测与定位车牌目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的车牌目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型训练数据集…

单机部署NGINX

​ 1、找到合适的nginx资源包&#xff0c;可以去官网下载 这里用的是 nginx-1.24.0.tar.gz 2、上传下载下来的nginx软件包&#xff0c;并解压 tar zxvf nginx-1.24.0.tar.gz cd nginx-1.24.0/ 3、安装nginx 编译 ./configure --prefix/usr/local/nginx --with-http_ssl…

从Vue2到Vue3【六】——Vue3的改变(文末送书)

系列文章目录 内容链接从Vue2到Vue3【零】Vue3简介从Vue2到Vue3【一】Composition API&#xff08;第一章&#xff09;从Vue2到Vue3【二】Composition API&#xff08;第二章&#xff09;从Vue2到Vue3【三】Composition API&#xff08;第三章&#xff09;从Vue2到Vue3【四】C…

Java面向对象的学习第二部分

接着上一部分继续&#xff1a;上一部分学了类和对象的一些基本概念、以及对象的特性之一&#xff1a;封装性。 一、面向对象 this方法补充&#xff1a; 在前面已经学了this方法&#xff0c;关于怎么使用&#xff0c;已经很属性了&#xff0c;但还是需要补充一些知识点&#xf…

Java中的代理模式

Java中的代理模式 1. 静态代理JDK动态代理CGLib动态代理 1. 静态代理 接口 public interface ICeo {void meeting(String name) throws InterruptedException; }目标类 public class Ceo implements ICeo{public void meeting(String name) throws InterruptedException {Th…

玩转回文:探索双下标法解谜,揭秘验证回文串的智慧攻略

本篇博客会讲解力扣“125. 验证回文串”的解题思路&#xff0c;这是题目链接。 验证回文串&#xff0c;我们最容易想到的思路就是&#xff0c;使用两个下标left和right&#xff0c;分别表示字符串的第一个字符和最后一个字符。接着&#xff0c;让两个下标不断向中间移动&#x…

Mysql 5.7 连接数爆满 清理连接数

Mysql 5.7 连接数爆满 清理连接数 我在做项目的时候遇到了这个报错&#xff0c;然后搜了半天也没有在网上找到mysql清理连接数的方案&#xff0c;后面还是自己写了一个 打开MySQL命令行或客户端&#xff0c;并使用管理员权限登录到MySQL服务器。 我这里使用的是navicat 输入…

智能小说文本字幕生成器

分享一个免费的&#xff0c;智能小说文本字幕生成器 智能分句。短词。 链接&#xff1a;https://pan.baidu.com/s/15xGlQg01LmbHHuGFZbgaiw?pwd0gjv 提取码&#xff1a;0gjv

动态代理的通用方法类

Java API给出的创建动态代理类中的两种方法&#xff08;一般直接使用第二种方法&#xff09;&#xff1a; 生产代理对象的工厂类&#xff1a; package com.atguigu.pojo;import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.refle…

【LeetCode-简单】剑指 Offer 06. 从尾到头打印链表(详解)

题目 输入一个链表的头节点&#xff0c;从尾到头反过来返回每个节点的值&#xff08;用数组返回&#xff09;。 题目地址&#xff1a;剑指 Offer 06. 从尾到头打印链表 - 力扣&#xff08;LeetCode&#xff09; 方法1&#xff1a;栈 思路 题目要求我们将链表的从尾到投打印一…