赛事级真题项目实训,经典闯关赛道教学。涵盖比赛典型套路、真题详解、靶场实训以及闯关验证。通过学习获得CTF真实比赛体验,快速进行能力提升


CTF简介

CTF是什么?

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

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


CTF的类型

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

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

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

CTF 和现实渗透的对比

现实的渗透测试会有非常完整的流程,从信息收集、漏洞探测开始,再逐项攻击,很多时候会一无所获。相比之下,CTF 的目标会比较明确,中等难度以下的题目一般都会在题目描述中提示漏洞的发生处,没有提示的话检测点也不会很多,一个个筛查就可以了。其次,有很多 CTF 题目会有点脱离现实渗透,套路、脑洞比较多,有的时候出题人为了出点新题会把题目设置得脑洞要特别大才能做出来,Misc 安全杂项更是这种题的重灾区。做这种题其实对现实渗透没啥帮助,因此较为简单、脑洞略大的 CTF 题仅作扩充知识面就好了。话虽如此,现在 CTF 大赛都已经往实战的方向走了,高水准的 CTF 题目很多都会模拟真实的网站,让你更加有真实渗透的代入感,渗透手法也更加贴近实战。国内比较良心的 CTF 有 DDCTF、安恒杯月赛 CTF 等等。






课程介绍

第一节课我们主要分为四个部分来引导大家关于ctf的介绍和学习的方法.主要分为下面四个部分:

  1. CTF入门引导
  2. CTF常见题型
  3. CTF实战题目讲解
  4. 归纳总结CTF之路

CTF(Capture The Flag)中文一般译作夺旗赛



https://static.cdnjs.cloud/2020423_box/2e5500744ff9ca40530f170f10ac1276_%E5%85%A5%E9%97%A8%E5%BC%95%E5%AF%BC1.mp4|视频封面图片链接


https://ctf-wiki.github.io/ctf-wiki/|ctf-wiki


https://www.ctftools.com/down/|工具合集



CTF现在的模式有哪几种?|!零和机制|!动态积分|!一血模式|!TEAM GAME




CTF中WEB题目的做题总结

首先ctf不同于真实实战,有很多题解出来需要绕很多弯,但ctf的题目无论多难解,都会给你承上启下的线索,hint出题人都会给你的,要学会找线索方法

题目特征明显

题目特征不明显

常用方法

1. 看源码

可以右键->【查看网页源代码】,也可以用火狐和谷歌浏览器的按F12键,按F12键可以修改html源代码方便构造一些值提交,但如果不需要的话直接右键查看源代码更直观,看网页里面的注释之类的都很方便。

2. 抓包

这几天接触到的抓包一般是用burpsuite,如果要多次尝试可以右键->【send to Repeater】,如果要对某个字段爆破可以右键->【send to Intruder】,这是我比较常用的两种burpsuite的功能。

今天还接触到谷歌浏览器:F12->Network->勾选【Preserve log】,也可以方便查看请求包和响应包的数据(包头字段和网页数据等)。

3. 关注的几个地方

有时候打开网页后感觉没有可疑的地方,首先查看下源代码,看有没有注释之类的提示信息,之后重新打开网页,抓抓包看下请求包响应包的包头数据有没有可疑的地方。

4. include漏洞

遇到php代码中有include($file)的,一般和 php://input或者php://filter有关,$file值如果是php://input,就要用post表单构造数据,如果是php://filter,就用下面的payload读取文件base64加密后的源代码,解密后查看源代码。


php://filter/read=convert.base64-encoding/resource=文件名(如index.php)

5. 代码审计

需要多次动态调试来尝试,以及要关注里面出现的函数,出现在关键位置的函数一般都是有用的,搜索一下有没有相关的漏洞。

还有一些和数据处理有关的绕过,如md5函数结果相等(0ed+)的比较,以及strcmp(array,string)=null,除了遇到时多百度之外,平时也需要多积累到时候才能想到。

还有GET参数构造的时候如果传入的是数组要记得加
,?txt
=
,如果填?txt=
似乎不会被当做array处理。

6.编码

JS的几种编码(如JSFUCK)都可以在浏览器F12之后的控制台执行,这样可以省去找解密网站的时间。

html编码,base64编码,url编码等等都可以在burpsuite上的decoder栏解决,但是发现burpsuite有一点不好就是中文不能显示,不知道是不是字符编码没有配置好,找到一个网址:


https://emn178.github.io/online-tools/base64_decode.html|编码网站


可以解好几种,界面也很简洁。



套路总览

  1. 根据hint识别出题方向
  2. 切忌钻牛角尖,多方向解题
  3. 合理利用顺风车,巧用搜索引擎


https://static.cdnjs.cloud/2020423_box/5db085cd5753a6e95b10d3cb706b5e0f_%E5%B8%B8%E8%A7%81%E8%A7%A3%E9%A2%98%E5%A5%97%E8%B7%AF.mp4|视频封面图片链接


当出题人提示你'登陆一下好吗'请问可能是什么题型?|条件竞争|计算时间|!sql注入拿到管理员密码|RCE





XSS漏洞的介绍

XSS全称:跨站脚本(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets)的缩写CSS混合,所以改名为XSS;攻击者会向web页面(input表单、URL、留言版等位置)插入恶意JavaScript代码,导致管理员/用户访问时触发,从而达到攻击者的目的。

攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的

XSS漏洞的大致分类

  1. 反射性
  2. 存储型
  3. DOM型

挖掘思维导图


下列有关XSS的解释正确的是 ()|一种木马攻击手段|!将恶意代码嵌入用户的浏览的web页面中|构造数据库语句对数据库进行非法访问|是引诱用户点击链接的一种攻击方式

CTF中XSS题型套路总结


https://static.cdnjs.cloud/2020423_box/519c81dc66f42a9c60bcdb6245fd1748_%E5%B8%B8%E8%A7%81%E5%A5%97%E8%B7%AF%E4%B9%8Bxss.mp4|视频封面图片链接


https://xz.aliyun.com/t/4492|svg缓存投毒


https://developer.mozilla.org/zh-CN/docs/Web/Security/Same-origin_policy|浏览器的同源策略


https://twosecurity.cn/courseLearnPage.html?q_id=i_5d11ee2b0db22_rBDuEshb&q_type=1&q_index=11#6|XSS与字符编码



SSRF漏洞的介绍和成因,场景

介绍
ssrf(Server-Side Request Forgery:服务器端请求伪造): 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)
成因
都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。 也就是说,对于为服务器提供服务的其他应用没有对访问进行限制,如果我构造好我的访问包,那我就有可能利用目标服务对他的其他服务器应用进行调用。
SSRF 漏洞出现的场景
1.能够对外发起网络请求的地方,就可能存在 SSRF 漏洞 2.从远程服务器请求资源(Upload from URL,Import & Export RSS Feed) 3.数据库内置功能(Oracle、MongoDB、MSSQL、Postgres、CouchDB) 4.Webmail 收取其他邮箱邮件(POP3、IMAP、SMTP) 5.文件处理、编码处理、属性信息处理(ffmpeg、ImageMagic、DOCX、PDF、XML)
CTF中SSRF题目套路讲解

https://static-v.zhishibox.net/20210115/107009933.mp4|https://static.zhishibox.net/20210115/101897185.png


XXE介绍
在展开讲XXE之前,我们必须得了解些基础概念.
XML
XML 指可扩展标记语言(eXtensible Markup Language)。 方便大家理解,这里与HTML对比着给大家说一下:HTML和XML 为不同的目的而设计,HTML 被设计用来显示数据,其焦点是数据的外观。XML 被设计用来传输和存储数据,其焦点是数据的内容。HTML 旨在显示信息,而 XML 旨在传输信息。
DTD
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。 DTD的声明:指XML文档中声明该文档的DTD或DTD来源的部分,可以包含在使用它的XML文档内部,也可以以独立的DTD文档(*.dtd)文档存在。 所以DTD一般认为有两种引用或声明方式: 1.内部DTD:即对XML文档中的元素、属性和实体的DTD的声明都在XML文档中 2.外部DTD:即对XML文档中的元素、属性和实体的DTD的声明都在一个独立的DTD文件(.dtd)中
XML基本文档结构

> &xxe;

XXE漏洞介绍
XXE Injection 即 XML External Entity Injection,也就是 XML 外部实体注入攻击.漏洞是在对非安全的外部实体数据进⾏行处理时引发的安全问题。

在 XML 1.0 标准里,XML 文档结构里定义了实体(entity)这个概念.实体可以通过预定义在文档中调用,实体的标识符可访问本地或远程内容.如果在这个过程中引入了「污染」源,在对 XML 文档处理后则可能导致信息泄漏等安全问题。


CTF中XXE题目的典型套路

https://static-v.zhishibox.net/20210115/107624241.mp4


文件上传漏洞介绍
文件上传漏洞是web安全中经常利用到的一种漏洞形式,一些web应用程序中允许上传图片,文本或者其他资源到指定的位置,文件上传漏洞就是利用这些可以上传的地方将恶意代码植入到服务器中,再通过url去访问以执行代码,在网站的运营过程中,不可避免地要对网站的某些页面或者内容进行更新,这时便需要使用到网站的文件上传的功能。
造成文件上传漏洞的原因是 对于上传文件的后缀名(扩展名)没有做较为严格的限制 对于上传文件的MIMETYPE 没有做检查 权限上没有对于上传的文件的文件权限,(尤其是对于shebang类型的文件) 对于web server对于上传文件或者指定目录的行为没有做限制

绕过小技巧

1.前端限制

function check(){ var filename=document.getElementById("file"); var str=filename.value.split("."); var ext=str
; if(ext=='jpg'||ext=='png'||ext=='jpeg'||ext=='gif'){ return true; }else{ alert("这不是图片!") return false; } return false; }
在表单中使用onsumbit=check()调用js函数来检查上传文件的扩展名。这种限制实际上没有任何用处,只能用于对于用户完全信任的情况下,很难称之为一种安全措施只能称之是一种防止用户误操作上传的措施 绕过:抓包或者前端修改函数的值
2.检测拓展名
文件被上传到服务端的时候,对于文件名的扩展名进行检查,如果不合法,则拒绝这次上传,一般有两种策略:黑名单和白名单,白名单策略是更加安全的,通过限制上传类型为只有我们接受的类型,可以较好的保证安全,因为黑名单我们可以使用各种方法来进行注入和突破 黑名单:
$postfix = end(explode('.','$_POST
); if($postfix=='php'||$postfix=='asp'||$postfix=='sh'){ echo "invalid file type"; return; }
白名单:
$postfix = end(explode('.','$_POST
); if($postfix=='jpg'||$postfix=='png'||$postfix=='gif'){ //save the file and do something next } else { echo "invalid file type"; return; }
绕过:

1.老版本的IIS中的目录解析漏洞,如果网站目录中有一个 /.asp/目录,那么此目录下面的一切内容都会被当作asp脚本来解析 2.老板本的IIS中的分号漏洞:IIS在解析文件名的时候可能将分号后面的内容丢弃,那么我们可以在上传的时候给后面加入分号内容来避免黑名单过滤,如 a.asp;jpg 3.旧版Windows Server中存在空格和dot漏洞类似于 a.php. 和 a.php
这样的文件名存储后会被windows去掉点和空格,从而使得加上这两个东西可以突破过滤,成功上传,并且被当作php代码来执行 4.nginx空字节漏洞 xxx.jpg%00.php 这样的文件名会被解析为php代码运行 5.apache的解析漏洞,上传如a.php.rar a.php.gif 类型的文件名,可以避免对于php文件的过滤机制,但是由于apache在解析文件名的时候是从右向左读,如果遇到不能识别的扩展名则跳过,rar等扩展名是apache不能识别的,因此就会直接将类型识别为php,从而达到了注入php代码的目的


3.检查HTTP Header中的Content-Type
HTTP协议规定了上传资源的时候在Header中加上一项文件的MIMETYPE,来识别文件类型,这个动作是由浏览器完成的,服务端可以检查此类型不过这仍然是不安全的,因为HTTP header可以被发出者或者中间人任意的修改. 绕过:比如我们可以用burpsuite抓包将请求报文中的Content-Type: application/php修改为 Content-Type: image/jpg, Content-Type: image/png, Content-Type: text/plain这些都可以 附上常用的MIMETYPE表

text/plain(纯文本) text/html(HTML文档) text/javascript(js代码) application/xhtml+xml(XHTML文档) image/gif(GIF图像) image/jpeg(JPEG图像) image/png(PNG图像) video/mpeg(MPEG动画) application/octet-stream(二进制数据) application/pdf(PDF文档) application/(编程语言) 该种语言的代码 application/msword(Microsoft Word文件) message/rfc822(RFC 822形式) multipart/alternative(HTML邮件的HTML形式和纯文本形式,相同内容使用不同形式表示) application/x-www-form-urlencoded(POST方法提交的表单) multipart/form-data(POST提交时伴随文件上传的表单)


CTF之典型套路之文件上传
接下来我们要来讲解CTF中关于文件上传的题目.
https://static-v.zhishibox.net/20210115/103186501.mp4|https://static.zhishibox.net/20210115/100731535.png

https://blog.csdn.net/qq_41079177/article/details/89386741

https://www.leavesongs.com/PENETRATION/apache-cve-2017-15715-vulnerability.html


CTF中文件包含题目的典型套路
文件包含主要是为了更好地使用代码的重用性,引入了文件包含函数,通过文件包含函数将文件包含进来,直接使用包含文件的代码,简单点来说就是一个文件里面包含另外一个或多个文件.

如果允许客户端用户输入控制动态包含在服务器端的文件,会导致恶意代码的执行及敏感信息泄露,主要包括本地文件包含和远程文件包含两种形式。


https://static-v.zhishibox.net/20210115/101165738.mp4|https://static.zhishibox.net/20210115/101177256.png

https://www.jianshu.com/p/be68cf9be911


ssti介绍
先上一张图,各位可先看图根据后文加深印象 模板引擎可以让(网站)程序实现界面与数据分离,业务代码与逻辑代码的分离,这大大提升了开发效率,良好的设计也使得代码重用变得更加容易。与此同时,它也扩展了黑客的攻击面。除了常规的 XSS 外,注入到模板中的代码还有可能引发 RCE(远程代码执行)通常来说,这类问题会在博客,CMS,wiki 中产生。虽然模板引擎会提供沙箱机制,攻击者依然有许多手段绕过它。 通过模板,Web应用可以把输入转换成特定的HTML文件或者email格式。就拿一个销售软件来说,我们假设它会发送大量的邮件给客户,并在每封邮件前SKE插入问候语,它会通过Twig(一个模板引擎)做如下处理:
$output = $twig->render( $_GET
, array("first_name" => $user.first_name) );
有经验的小伙伴可能会立刻想到xss,但是问题不止如此,此时我们可以尝试使用ssti:假设我们发送如下请求,
custom_email={{7*7}} // GET 参数 49 // $output 结果
我们不难猜到服务器执行了我们传过去的数据。每当服务器用模板引擎解析用户的输入时,这类问题都有可能发生。除了常规的输入外,攻击者还可以通过 LFI触发它。模板注入和 SQL 注入的产生原因有几分相似——都是将未过滤的数据传给引擎解析。
CTF中ssti题目套路讲解
本节课学习SSTI题目的一些常见套路.SSTI在一些中大型比赛中相对比较常见
https://static-v.zhishibox.net/20210115/101722080.mp4|https://static.zhishibox.net/20210115/108849138.png

SSTI套路课件|https://static.cdnjs.cloud/2020424_box/671a713ea8cb56ee653b7c55f54cd312_SSTI%E9%A2%98%E7%9B%AE%E5%85%B8%E5%9E%8B%E5%A5%97%E8%B7%AF.pdf

服务端模板注入攻击|https://zhuanlan.zhihu.com/p/28823933


sql,nosql注入漏洞介绍

基本概念

- SQL 注入是一种将 SQL 代码插入或添加到应用(用户)的输入参数中,之后再将这些参数传递给后台的 SQL 服务器加以解析并执行的攻击。 攻击者能够修改 SQL 语句,该进程将与执行命令的组件(如数据库服务器、应用服务器或 WEB 服务器)拥有相同的权限。 如果 WEB 应用开发人员无法确保在将从 WEB 表单、cookie、输入参数等收到的值传递给 SQL 查询(该查询在数据库服务器上执行)之前已经对其进行过验证,通常就会出现 SQL 注入漏洞。

NoSQL:非关系型数据库,也称Not Only SQL

NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。相对于铺天盖地的关系型数据库运用,这一概念无疑是引入了一种全新思维的注入方式。如MongoDB的漏洞对Web应用程序可能会产生的攻击。 MongoDB是一个基于分布式文件存储的数据库。它支持的数据结构非常松散,是类似JSON的BSON格式.因此可以存储比较复杂的数据类型。MangoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言。目前开发人员使用NoSQL数据库的各种应用的情形越来越多.
关于SQL注入说法正确的是 ()|SQL注入是攻击者直接对web数据库的攻击|!SQL注入可以造成数据库泄露|SQL注入的SQL命令在浏览器中执行|SQL注入除了让攻击者绕过登录检测以外,没有别的危害

CTF中sql注入漏洞题目典型套路讲解
SQL注入作为比赛中非常热门的一类题目,本节课来学习一下这类题目的典型套路.
https://static-v.zhishibox.net/20210115/104942100.mp4|https://static.zhishibox.net/20210115/103745185.png

本节学习一下"贯穿所有题目"的典型套路:操作系统和语言特性

操作系统多用在一些命令执行的题目,语言特性通常用在绕过waf,一些正则


题目场景

- Trick in Linux PHP黑魔法 Windows环境特点 Javascript原型链

https://static-v.zhishibox.net/20210115/103890783.mp4


总结
通过课程我们学习和练习
-XXS -SSRF -XXE -文件上传 -文件包含 -SSTI模板注入 -SQL/NOSQL注入 -操作系统和语言特性
希望你能总结所学的知识,并不断的练习题目
https://static-v.zhishibox.net/20210115/105659394.mp4

定制化咨询

如果你看完了以上学习教程,仍然对某一些知识点有所疑问、或者你有很
明确
的提升需求,目前的视频教程并不能解决你的问题,欢迎扫描下方二维码添加老师了解【定制化咨询服务】。

什么是定制化咨询?

所谓定制化咨询,就是讲师会根据你现有的知识储备以及你想要的达到的目标,定制化的为你制定学习方案。时长一般为一个半月左右,学习期间内进行密集化提升,会要求你每天有足够的时间学习,保障最终的学习效果。

咨询的核心不是学习知识点,是学怎么发现问题、解决问题的方法。学思维模式,学可以具有创造力的途径。

在学习期间内,除了要学习必要的的知识点以外,导师会一对一的督促你进行实战训练,并在实战的过程中帮你分析遇到的问题。如果你曾经有过遇到WAF绕不过去、拿着目标不知道如何下手、有了漏洞不知道如何扩展等等、诸如此类只有在实战中才会遇到的难题,那么这就是定制化咨询可以帮你解决。

什么是明确的提升需求?

指目前有一个非常明确的目标需要去实现,但是不知道如何去解决进一步提升。
有安全基础想要就业渗透测试岗位--->想就业 工作上遇到了问题--->有具体的困难 不知道如何挖掘漏洞--->漏洞挖掘 公司要求找到漏洞--->转正 目前的技术挖不出满意的漏洞--->新技术学习 ···
诸如上述,都是一些很明确的提升需求。如果你有这样明确的目标,可以添加老师微信详细咨询,我们会在学习期间内保证你的完成目标。
入门引导,典型套路总览,典型套路之XSS,典型套路之SSRF,典型套路之XXE,典型套路之文件上传,典型套路之文件包含,典型套路之SSTI模板注入,典型套路之SQL,NOSQL注入,典型套路之操作系统/语言特性,XSS题目之NAME:HCOREM,XSS题目之NAME:MISSION_INVISIBLE,SSRF题目之SSRFME,SSRF题目之协议很6?,SSRF题目之地址绕过,XXE题目之简单XXE,XXE题目之Blind/Local XXE,文件上传题目之CHECK IN,文件上传题目之WAFUPLOAD,文件上传练习,SSTI之NORMAL SSTI,SSTI题目之护网杯2019 SSTI,SSTI题目之SCAM,代码审计题目之MEMBERSHOP,代码审计题目之SSRFME,代码审计题目之FILEMAGI,SQL注入题目之随便注,SQL注入题目之EASYSQL,总结:CTF-WEB的摸爬滚打,定制化提升,知识盒子,知识付费,在线教育