CTF Web方向学习笔记

CTF Web方向学习笔记

一、CTF Web方向概述

CTF(Capture The Flag)竞赛中,Web方向是最常见且多样化的赛道之一,主要考察选手对Web漏洞的挖掘与利用能力。常见的考点包括SQL注入XSS文件上传漏洞SSRF反序列化漏洞等。学习Web方向需掌握以下核心技能:

  1. HTTP协议基础:理解请求头/响应头、Cookie、Session、状态码等机制。
  2. 漏洞原理与利用:熟悉各类Web漏洞的触发条件和绕过方法。
  3. 工具链使用:如Burp Suite、SQLMap、Postman、Wireshark等。
  4. 代码审计能力:能快速分析PHP、Python、Java等语言的代码逻辑。

二、常见漏洞类型与解题思路

1. SQL注入(SQLi)
  • 原理:攻击者通过构造恶意输入,使后端数据库执行非预期的SQL语句。
  • 常见题型
    • Union注入:利用UNION SELECT拼接查询结果。
    • 布尔盲注:通过页面返回的真假状态逐位猜解数据。
    • 时间盲注:通过SLEEP()或条件延迟判断数据。
  • 例题
    ?id=1' AND (SELECT SUBSTR(database(),1,1))='a'--+
    
    通过修改SUBSTR参数和字符值爆破数据库名。
  • 防御:使用预编译语句(Prepared Statement)或ORM框架。
2. XSS(跨站脚本攻击)
  • 原理:向页面注入恶意脚本,窃取Cookie或执行任意操作。
  • 分类
    • 反射型XSS:Payload通过URL参数传递并即时触发。
    • 存储型XSS:恶意脚本存储于数据库,持久化攻击。
    • DOM型XSS:通过修改DOM树触发,无需服务器交互。
  • 利用技巧
    • 使用<script>alert(1)</script>测试基础漏洞。
    • 通过document.cookie窃取用户凭证。
  • 绕过过滤
    • 编码绕过:如< img src=x onerror=alert(1)>
    • 事件触发:利用onmouseoveronerror等属性。
  • 防御:输入过滤与输出编码(如HTML实体化)。
3. 文件上传漏洞
  • 原理:未对上传文件类型、内容进行严格校验,导致上传恶意文件。
  • 绕过方法
    • 修改文件扩展名(.php.php5)。
    • 添加文件头欺骗(GIF89a)。
    • 利用解析漏洞(Apache的test.php.jpg解析为PHP)。
  • 例题
    上传.htaccess文件设置解析规则:
    AddType application/x-httpd-php .jpg
    
    随后上传含PHP代码的JPG文件实现RCE。
  • 防御:白名单校验、文件内容检测、禁用危险函数。
4. SSRF(服务端请求伪造)
  • 原理:利用服务端发起内部网络请求,探测或攻击内网服务。
  • 常见利用场景
    • 访问file://协议读取本地文件。
    • 攻击Redis未授权访问实现RCE。
    • 扫描内网端口(如http://127.0.0.1:3306)。
  • 绕过技巧
    • 使用进制IP(如2130706433127.0.0.1)。
    • 域名重定向(利用短链服务或可控DNS)。
  • 防御:禁用非常用协议、设置请求白名单。
5. 反序列化漏洞
  • 原理:未对反序列化数据做安全校验,导致执行恶意代码。
  • 常见语言:PHP(unserialize())、Python(pickle)、Java(readObject())。
  • 利用链构造
    • PHP中通过__destruct()__wakeup()方法触发漏洞。
    • Java利用Apache Commons Collections等Gadget链。
  • 例题(PHP):
    class Exploit {
        public $cmd = "system('whoami');";
        function __destruct() {
            eval($this->cmd);
        }
    }
    echo serialize(new Exploit);
    
    生成Payload后提交触发反序列化。
  • 防御:避免反序列化用户输入,使用签名校验数据完整性。
6. SSTI(服务端模板注入)
  • 原理:将用户输入拼接到模板中,导致执行任意代码。
  • 常见框架:Flask(Jinja2)、Django、Twig。
  • 检测与利用
    • 输入{{7*7}}测试是否返回49
    • 通过内置类获取上下文(如Python的__subclasses__())。
  • 例题(Jinja2):
    {{ ''.__class__.__mro__[1].__subclasses__()[X].__init__.__globals__['os'].popen('id').read() }}
    
    替换X查找包含os模块的类。
  • 防御:禁止动态模板渲染,沙箱隔离。

三、工具与实战技巧

  1. Burp Suite
    • 拦截修改请求(Repeater/Intruder模块)。
    • 爆破密码或验证码(Cluster Bomb模式)。
  2. SQLMap
    • 自动化SQL注入:sqlmap -u "http://target.com?id=1" --dbs
    • 绕过WAF:使用--tamper=space2comment等脚本。
  3. 编码转换
    • Base64、URL编码、Hex编码互转。
  4. WAF绕过
    • 混淆SQL语句:SEL/*!ECT*/
    • 分割关键词:<scr<script>ipt>

四、学习建议与资源

  1. 靶场练习
    • DVWA、WebGoat、PortSwigger Labs。
  2. CTF平台
    • CTFHub、攻防世界、HackTheBox。
  3. 知识扩展
    • 阅读PHP/Java安全特性(如disable_functions)。
    • 学习HTTP走私、JWT伪造等进阶漏洞。
  4. Writeup分析
    • 复现历年CTF赛题(如强网杯、DEFCON)。

五、总结

CTF Web方向需理论与实践结合,从基础漏洞入手,逐步掌握复杂场景的利用与绕过技巧。建议通过靶场实战加深理解,并关注新兴漏洞技术(如云原生安全、API滥用等),持续提升攻防能力。

posted @ 2025-04-25 23:52  小阿妍  阅读(693)  评论(0)    收藏  举报