BaseCTF2024 第一周个人Writeup

BaseCTF2024 第一周个人Writeup

💡 原文中文,约26000字,阅读约需62分钟。
📝

内容提要

这篇文章讲述了一个关于文件上传漏洞的故事,作者通过一个网页发现了文件上传功能,利用漏洞上传了webshell并成功获取了服务器上的flag文件,最后获得了flag。

🔎

延伸解读

从MISC到Web:CTF题型的典型解题路径

本文涵盖MISC、Base、Crypto、Web等多个方向,展示了CTF比赛常见的解题思路。MISC部分涉及PNG隐写、伪加密和流量分析,需要熟练使用TweakPNG、ZipCracker、Wireshark等工具;Base部分通过多层编码和Python条件约束反推flag,考验逻辑推理;Crypto部分利用RSA的phi_n计算和AES解密;Web部分则包含HTTP参数伪造、PHP代码执行、MD5绕过和文件上传漏洞。读者可借此了解不同题型的切入点和工具链。

文件上传漏洞的利用与防御要点

文章最后一道Web题展示了典型的文件上传漏洞:服务器未对上传文件类型、后缀进行严格过滤,直接将文件保存到uploads目录并保留原名。攻击者可上传webshell(如哥斯拉生成的php文件)并连接,进而执行任意命令、读取服务器上的flag。防御此类漏洞需校验文件类型、重命名文件、限制上传目录权限,并禁止上传目录执行脚本。

PHP弱类型比较与MD5绕过技巧

在“md5绕过欸”题目中,作者利用PHP的弱类型比较特性:当两个字符串的MD5值均以0e开头时,==比较会将它们视为科学计数法数字0,从而绕过相等判断。此外,通过传入数组参数(如name2[]=1)可使md5()返回null,满足===条件。对于强类型比较,则需使用真实MD5碰撞(如fastcoll生成两个不同文件但MD5相同)。这些技巧在CTF中常见,也提醒开发者避免使用弱比较和MD5处理敏感数据。

❓

Q&A

文件上传漏洞是如何被利用的?

作者通过网页发现文件上传功能,利用漏洞上传了webshell,成功获取了服务器上的flag文件。

如何分析PNG文件中的隐写数据?

使用TweakPNG分析png文件,发现冗余数据,并通过Python脚本解码获取提示信息。

如何解压带密码的压缩文件?

尝试解压where_is_key.zip文件时发现需要密码,使用ZipCracker解除伪加密后成功解压。

如何通过网络抓包获取flag?

通过网络抓包文件发现对/wireshark/flag.php的请求,获取到flag的内容。

如何使用base64解码获取flag?

使用base64解码文件内容,获取有意义的字符串,最终得到flag。

如何通过md5碰撞获取flag?

使用Python脚本生成md5碰撞,获取flag的内容。

🏷️

标签

➡️

继续阅读