Web 学习路线 ¶
写在前面 ¶
不要把 CTF 比赛当成你学习的全部,在后面希望学弟学妹们能多看看外面的世界,了解安全圈最新动态找到你最适合的方向
Web 在 CTF 当中的分类 ¶
在 CTF 比赛中,Web 有几大分类:
解题模式:通常是 0day 挖掘 (主要是 PHP 写的各类 CMS 的漏洞挖掘)、nday 利用 (Java、nodejs);当然传统题型也是有的,主要是 Bypass Waf,也就是绕过题目中的限制进行利用
AWD:
早期流行的攻防模式,主要是 Web,通常都能直接在网上搜到的 nday 漏洞,难点在于拿到 Webshell 后的权限维持
AWD+:
解题与 AWD 的混合模式,由于 AWD 模式下选手直接互相干扰情况严重推出的新模式,分为 Build 与 Fix 两个阶段,第一阶段就是常规的 CTF 题目,而第二阶段则对之前的 Web 题目进行修复
内网渗透:
主要是后渗透,出现在线下比赛当中,首先前台会留给你一个利用点能获得 Webshell,接着利用入侵成功的外网服务器作为跳板,攻击内网其他服务器,最后获得敏感数据,并将数据传递到攻击者,看情况安装长期后门,实现长期控制和获得敏感数据的方式
Web 技能栈 ¶
你需要知道常见的编程语言:PHP、Java、nodejs、python
单考点主要是:信息泄露、SSTI(服务端模板注入)、XSS(跨站脚本攻击)、Bypass Waf、SQLI(SQL 注入)、XXE(XML 外部实体)、Unserialize(反序列化攻击)、nday 利用、密钥伪造、Xs-leaks 攻击等
刷题路线 ¶
1. 攻防世界
- 只需要刷一刷 Web 新手区即可,学习时需要你百度搜索解法并了解,这个接断主要是培养对 Web 的基本感觉
2.CTFHub
- 开始进入系统学习截断,注册刷技能树 Web 分类,涉及信息泄露、密码口令、SQL 注入、XSS、XSS、文件上传、RCE、SSRF 等
3.BUUCTF
- 这个时候你已经具备了一定的能力,可以开始学习一些难题了,这时候就是不断拓展难度深入学习的过程
在 BUUCTF 刷了一段时间后可以尝试报名 CTF 比赛,彻底开启你的安全之旅
详细学习路线 ¶
1. 首先你需要了解 Web 安全的一些相关基本概念,通过 Google 或者 Baidu 查看 Owasp top10 攻击利用类型,学会使用 github 搜索
2. 学习常见工具的使用 (BurpSuite、sqlmap、dirsearch、AntSword)
- 下载无后门版的这些软件进行安装,百度如 Burpsuite 的基本使用
3. 实战操作,具体可以参考本 Wiki 当中内容配合 Google\Baidu 学习
-
了解 SQL 注入的种类、注入原理、手动注入技巧
-
研究文件上传的原理,如何进行截断、双重后缀欺骗 (IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架;
-
研究 XSS 形成的原理和种类,可以参考:XSS;
-
linux 与 windows 常见系统命令,Google\Baidu 搜索 CTF 命令执行与绕过,可以参考:命令执行绕过
-
研究 XXE 形成的原理和种类,可以参考: 浅谈 XXE 漏洞原理
4. 学习一门脚本编程语言,选择脚本语言 Perl/Python/PHP/Go/Java 中的一种,对常用库进行编程学习,这在 CTF 当中将会大大简化我们的利用操作,这里推荐 Python,先简简单单看看菜鸟教程并动手学习即可,学习语法、正则、文件、网络、多线程等常用库
5. 源码审计与漏洞分析,需要你能独立分析脚本源码程序并发现安全问题
-
熟悉源码审计的动态和静态方法,并知道如何去分析程序,参见 SecWiki - 审计;
-
从 Wooyun 上寻找开源程序的漏洞进行分析并试着自己分析;
-
了解 Web 漏洞的形成原因,然后通过关键字进行查找分析,参见 SecWiki - 代码审计、高级 PHP 应用程序漏洞审核技术;
-
研究 Web 漏洞形成原理和如何从源码层面避免该类漏洞,并整理成 checklist。