1 目录
- Web系统的组成部分
- 如何判断是哪一块出了问题
- CTF-Web题目解题思路之–语言
- CTF-Web题目解题思路之–数据库
- CTF-Web题目解题思路之–Web服务器软件
- CTF-Web题目解题思路之–操作系统
2 Web系统的组成部分
2.1 LAMP系统
LAMP含义:一个Web系统的组成部分就只有四个方面:操作系统、Web服务软件(Apache、Nginx)、数据库、Web语言
Web题目不仅仅是一个题目,更是一个Web系统,解题的目的就是为了能够渗透这个Web系统,获取信息或者权限
3 如何判断是哪一块出了问题
Web系统的主要目的是为了生活服务,具有特定的功能,所以一般可以分为以下几个步骤去检测这个Web系统到底出了什么问题
- 探明清楚Web系统的语言、框架,首先能满足其正常功能;
- 查看有没有数据库功能,存在数据库一般都会有数据库的考点;
- 接着扫描目录,查看有没有源码或者其他提示性文件;
- 寻找输入点(包括输入框、文件上传点、XSS点等),根据语言特性,进行payload测试,挖掘语言上的漏洞;
- 最后再考虑是否是操作系统或者Web服务器上的漏洞,这块基本都会涉及到webpwn方面的知识。
4 CTF-Web题目解题思路之–语言
4.1 前端语言
- HTML和CSS一般不会单独作为考点,但是依然要掌握快速读懂它们的技巧
- JavaScript考点:目前前端考点都集中在这块
信息获取:JS加解密、XSS攻击、CSP防御机制绕过、CSRF等;
权限获取:NodeJS代码审计、前端VUE、跨域。 - 关于每个方向的解题方法
JS加解密解题主要靠积累,利用常用在线加解密网站即可;
XSS攻击主要思路为寻找题目中BOT访问外界的点,然后查看有无CSP防御,并且根据题意构造合适的payload。
关于每个方向的主要解题方法
- NodeJS审计需要一定的代码审计功底,题目纷繁复杂,出题点也各异,但是目前主要的形式都是做成游戏然后给出源码对其进行审计
- 解题思路:源码审计,寻找可利用的eval()函数,构造语句使得eval()函数可控,远程安装npm包实现命令执行。
4.2 后端语言
- Python
- Java
- PHP
4.2.1 Python主要考点
- ssti服务端模板注入
- yml反序列化,PyYAML在解析数据的时候遇到特定格式的时间数据会将其自动转化为Python时间对象(类似于PHP反序列化)
- JWT认证绕过(伪造token,伪造session)
- secret key泄露导致命令执行(一般是Django代码执行)
- Django、flask、tornado等框架的漏洞
4.2.2 Java主要考点
- spring框架漏洞,近年较火
- Java反序列化
- 代码审计
4.2.3 PHP主要考点
- Bypass:最常用考点,主要源于PHP语言本身书写时的一个漏洞,典型案例PHP黑魔法
- 条件竞争:多个客户端同时访问一个服务器的功能所带来的非预期结果
- 反序列化:只要题目给了源码大概率是反序列化漏洞,解题思路为寻找起点和终点(魔法函数起点(unserialize等)->新的php对象->pop链->目的函数终点(eval)
- 文件包含:大部分考点在于本地文件包含(LFI),在实战中可拿到shell
- SSRF:服务端请求伪造,可以结合很多协议其他协议进行利用,达到攻击内网的目的
- phar利用:经常和LFI结合,同时也经常结合反序列化等考点
- 文件上传绕过
- 框架考点:了解著名的框架,例如thinkphp、laravel、各种cms
5 CTF-Web题目解题思路之–数据库
- sql注入
- 权限获取
6 CTF-Web题目解题思路之–Web服务器软件
6.1 Web服务器题目种类
- Linux上的服务器:Apache、Nginx服务器
考点:服务器解析漏洞(常与文件上传结合),LD_PRELOAD(可使得在执行php程序时优先引用自己写到的动态链接库),Nginx配置漏洞(目录泄露),Apache栈溢出漏洞(涉及webpwn)等 - Windows上的服务器:IIS
考点:PUT发包上传漏洞,IIS远程溢出漏洞等 - 服务器组件漏洞
考点:Apache组件提权漏洞,CGI漏洞(公共网关接口,配合Nginx解析漏洞)
7 CTF-Web题目解题思路之–操作系统
7.1 操作系统中考点不多,一般结合webpwn
- 操作系统中的目录遍历
- .so文件逆向分析
- 结合tensorflow进行机器学习考察
- 区块链考点
- 结合密码学:CBC翻转攻击,哈希扩展攻击,padding oracel填充攻击
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达,可以邮件至 xingshuaikun@163.com。