当前位置: 首页 > article >正文

网络安全:CTF入门必备之题型介绍

前言

CTF 题目类型一般分为 Web 渗透、RE 逆向、Misc 杂项、PWN 二进制漏洞利用、Crypto 密码破译。

一、Web类题目

在传统的CTF线上比赛中,Web类题目是主要的题型之一,相较于二进制、逆向等类型的题目,参赛者不需掌握系统底层知识;相较于密码学、杂项问题,不需具特别强的编程能力,故入门较为容易。Web类题目常见的漏洞类型包括注入、XSS、文件包含、代码执行、上传、SSRF等。

信息搜集

前期的题目信息搜集可能对于解决CTF线上比赛的题目有着非常重要的作用

敏感目录泄露

通过敏感目录泄露,我们往往能获取网站的源代码和敏感的URL地址,如网站的后台地址等。

比如:

  • 攻击者可以通过.git文件夹中的信息获取开发人员提交过的所有源码,进而可能导致服务器被攻击而沦陷。
  • admin之类的敏感后台文件夹
敏感备份文件

通过一些敏感的备份文件,我们往往能获得某一文件的源码,亦或网站的整体目录等。

比如:vim的备份文件

常规文件

比如:

  • robots.txt:记录一些目录和CMS版本信息。
  • readme.md:记录CMS版本信息,有的甚至有Github地址。
Banner识别

一个网站的Banner信息(服务器对外显示的一些基础信息)对解题有着十分重要的作用,选手往往可以通过Banner信息来获得解题思路,如得知网站是用ThinkPHP的Web框架编写时,我们可以尝试ThinkPHP框架的相关历史漏洞。

SQL注入

而由于开发者在程序编写过程中,对传入用户数据的过滤不严格,将可能存在的攻击载荷拼接到SQL查询语句中,再将这些查询语句传递给后端的数据库执行,从而引发实际执行的语句与预期功能不一致的情况。这种攻击被称为SQL注入攻击。

SQL注入漏洞也是现实场景下最常见的漏洞类型之一。

SQL注入,包括数字型注入、UNION注入、字符型注入、布尔盲注、时间注入、报错注入和堆叠注入等注入方式。

任意文件读取漏洞

所谓文件读取漏洞,就是攻击者通过一些手段可以读取服务器上开发者不允许读到的文件。

文件读取漏洞常常意味着被攻击者的服务器即将被攻击者彻底控制。

SSRF漏洞

SSRF(Server Side Request Forgery,服务端请求伪造)是一种攻击者通过构造数据进而伪造服务器端发起请求的漏洞。因为请求是由内部发起的,所以一般情况下,SSRF漏洞攻击的目标往往是从外网无法访问的内部系统。

SSRF漏洞形成的原因多是服务端提供了从外部服务获取数据的功能,但没有对目标地址、协议等重要参数进行过滤和限制,从而导致攻击者可以自由构造参数,而发起预期外的请求。

命令执行漏洞

通常情况下,在开发者使用一些执行命令函数且未对用户输入的数据进行安全检查时,可以注入恶意的命令,使整台服务器处于危险中。

XSS漏洞

跨站脚本(Cross-Site Scripting,XSS)是一种网站应用程序的安全漏洞攻击,是代码注入的一种,允许恶意用户将代码注入网页,其他用户在观看网页时会受到影响。

根据XSS漏洞点的触发特征,XSS可以粗略分为反射型XSS、存储型XSS。

反射型XSS通常是指恶意代码未被服务器存储,每次触发漏洞的时候都将恶意代码通过GET/POST方式提交,然后触发漏洞。

存储型XSS则相反,恶意代码被服务器存储,在访问页面时会直接被触发(如留言板留言等场景)。

Web文件上传漏洞

文件上传在Web业务中很常见,如用户上传头像、编写文章上传图片等。在实现文件上传时,如果后端没有对用户上传的文件做好处理,会导致非常严重的安全问题,如服务器被上传恶意木马或者垃圾文件。

二、二进制类题目

移动端题目

CTF中的移动端题目普遍偏少,Android类的题目主要偏向杂项(Misc)和逆向(Reverse)。

前者通常根据Android系统特性隐藏相关数据,考察参赛者对系统特性的熟悉程度;

后者主要考察参赛者的Java、C/C++逆向能力,出题人常常会加入混淆(ollvm等)、加固、反调试等技术,以增加应用的逆向难度。这类题目往往需要参赛者具备一定的逆向和开发能力,熟悉常用调试逆向工具,知道常见反调试及加壳脱壳方法。

在CTF中,逆向工程一般是指软件逆向工程,即对已经编译完成的可执行文件进行分析,研究程序的行为和算法,然后以此为依据,计算出出题人想隐藏的flag。

一般,CTF中的逆向工程题目形式为:程序接收用户的一个输入,并在程序中进行一系列校验算法,如通过校验则提示成功,此时的输入即flag。

静态分析

逆向工程的最基本方法是静态分析,即不运行二进制程序,而是直接分析程序文件中的机器指令等各种信息。目前,静态分析最常用的工具是IDA Pro。

动态分析

所谓动态分析,就是将程序实际运行起来,观察程序运行时的各种行为,从而对程序的功能和算法进行分析。这需要被称为调试器的软件,调试器可以在程序运行时观察程序的寄存器、内存等上下文信息,还可以让程序在指定的地址停止运行等。

二进制代码保护和混淆

在现实生活中,攻与防的博弈无处不在。为了防止自己编写的二进制程序被逆向分析,许多软件会采取各种手段,为程序加上重重壁垒。

二进制代码的保护手段种类繁多,且运用极其灵活,例如:对汇编指令进行一定程度的混淆变换,可以干扰静态分析中的反汇编过程;在程序中穿插各种反调试技术,能有效地抵御动态分析;对程序中的关键算法进行虚拟化保护,可以给逆向工作者带来极大的阻力。

符号执行

符号执行(Symbolic Execution)是一种程序分析技术,可以通过分析程序来得到让特定代码区域执行的输入。

使用符号执行分析一个程序时,该程序会使用符号值作为输入,而非一般执行程序时使用的具体值。在达到目标代码时,分析器可以得到相应的路径约束,然后通过约束求解器来得到可以触发目标代码的具体值。

在实际环境下,符号执行被广泛运用到了自动化漏洞挖掘测试的过程中。

在CTF中,符号执行很适合解决各种逆向题,只需让符号执行引擎自动分析,找到让程序执行到输出flag正确的位置,然后求解出所需的输入即可。

二进制插桩

插桩(Instrumentation)是在保证程序原有逻辑完整性的基础上,在程序中插入探针,通过探针的执行来收集程序运行时信息的技术。

插桩往往用在以下两方面:

  • 程序分析,性能分析,错误检测、捕获和重放。
  • 程序行为模拟,改变程序的行为,模拟不支持的指令。

与源码级插桩相比,二进制插桩与语言无关,不需要程序的源码,也不需要重新编译链接程序,它直接对程序的机器码进行插桩,因此在逆向工程和实际漏洞挖掘中一般可以使用二进制插桩。

二进制动态插桩相对于二进制静态插桩更加强大,可以在程序运行时进行插桩,可以处理动态生成的代码,如加壳,适用的场景更加广泛。

二进制漏洞PWN

通过二进制漏洞获取计算机权限的方法或者过程被称为PWN。

在CTF中,PWN主要通过利用程序中的漏洞造成内存破坏以获取远程计算机的shell,从而获得flag。

PWN题目比较常见的形式是把一个用C/C++语言编写的可执行程序运行在目标服务器上,参赛者通过网络与服务器进行数据交互。因为题目中一般存在漏洞,攻击者可以构造恶意数据发送给远程服务器的程序,导致远程服务器程序执行攻击者希望的代码,从而控制远程服务器。

逆向工程是PWN的基础,二者的知识结构差不多。所以,有时会用二进制安全来指代逆向工程和PWN。

三、密码学题目

近年来,CTF中密码学题目的难度不断增大,占比也越来越高。相比于Web和二进制,密码学更考验参赛者的基础知识,对数学能力、逻辑思维能力与分析能力都有很高的要求。

—END—

这里我整合并且整理成了一份【282G】的网络安全/红客技术从零基础入门到进阶资料包,需要的小伙伴文末免费领取哦,无偿分享!!!

学习计划安排

学习路线图大纲总览

在这里插入图片描述

我一共划分了六个阶段,但并不是说你得学完全部才能上手工作,对于一些初级岗位,学到第三四个阶段就足矣~

【一一帮助网络安全学习,以下所有资源免费领取一一】
①网络安全学习路线
②上百份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥HW护网行动经验总结
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析

接下来我将给各位小伙伴划分一张学习计划表!

学习计划

那么问题又来了,作为萌新小白,我应该先学什么,再学什么?
既然你都问的这么直白了,我就告诉你,零基础应该从什么开始学起:

阶段一:初级网络安全工程师

接下来我将给大家安排一个为期1个月的网络安全初级计划,当你学完后,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web渗透、安全服务、安全分析等岗位;其中,如果你等保模块学的好,还可以从事等保工程师。

在这里插入图片描述

综合薪资区间6k~15k

1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(1周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(1周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(1周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)


那么,到此为止,已经耗时1个月左右。你已经成功成为了一名“脚本小子”。那么你还想接着往下探索吗?

阶段二:中级or高级网络安全工程师(看自己能力)

综合薪资区间15k~30k

7、脚本编程学习(4周)
在网络安全领域。是否具备编程能力是“脚本小子”和真正网络安全工程师的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力。

零基础入门的同学,我建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习
搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP,IDE强烈推荐Sublime;

Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,没必要看完

用Python编写漏洞的exp,然后写一个简单的网络爬虫

PHP基本语法学习并书写一个简单的博客系统

熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选)

了解Bootstrap的布局或者CSS。

阶段三:顶级网络安全工程师

这部分内容对于咱们零基础的同学来说还太过遥远了,由于篇幅问题就不展开细说了,我给大家贴一个学习路线。感兴趣的童鞋可以自行研究一下哦,当然你也可以点击这里加我与我一起互相探讨、交流、咨询哦。


在这里插入图片描述

资料领取

上述这份完整版的网络安全学习资料已经上传网盘,朋友们如果需要可以微信扫描下方二维码 即可免费领取↓↓↓
或者

【点此链接】领取

http://www.lryc.cn/news/2412712.html

相关文章:

  • 关于TDSQL(MySQL)的简单知识分享
  • [DL]深度学习_ResNet
  • acm的详细介绍以及时间路线
  • (六十七)神经网络——MLP
  • Linux指令:find
  • C语言 strstr()函数详解加应用
  • Navicat Mysql 安装详解
  • Python图片处理模块PIL(pillow)
  • SDN学习路径——SDN架构
  • 泊松分布与随机事件:数学模型解析
  • 1 python基本语法 - List
  • 以太网及ARP协议简介
  • 游戏算法-AOI基本介绍
  • eMMC协议:深入解析eMMC HS与HS400
  • 安卓root详解(supersu,magisk原理说明)
  • 相见恨晚!一文搞清XGBoost算法
  • 前端新能优化篇之localStorage和sessionStorage的区别及其使用方式
  • 学习笔记:基于GMM的语音转换(超详细)
  • 2024最新Kali Linux入门教程(全面详细),收藏过万
  • 正确安装PaddleOCR的方法
  • smb协议讲解_SMB协议(使用说明+过程详解+抓包分析)
  • Java占位符%s
  • 学习SpringCloud-基础入门
  • AutoHotKey自动热键(三)热键的<有条件生效>与<无条件生效>
  • 规则引擎groovy
  • 大学四年,自学编程常用的10个学习网站_w3school和菜鸟教程哪个好
  • 常用网络命令:ipconfig和ifconfig
  • tcpdump参数解析及使用详解
  • 使用机器学习进行NSFW内容检测
  • 试用了NotePad++,果断抛弃用了十年的EditPlus