跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python算法

BaseCTF Week3 Web 与 Misc 解题思路

综述由AI生成解析了 BaseCTF Week3 的三道 Misc 题目。第一题通过逆向 Python 像素混淆算法并结合 Stegsolve 工具还原隐藏信息;第二题利用文件扩展名伪装和 foremost 工具分离出压缩包,配合已知密码解压获取 flag;第三题结合兽音翻译与 XOR 异或解密,最后通过修复文件头成功打开图片。重点在于灵活运用隐写术、文件恢复及基础密码学知识。

疯疯癫癫发布于 2026/4/9更新于 2026/5/2313 浏览
BaseCTF Week3 Web 与 Misc 解题思路

BaseCTF Week3 Web 与 Misc 解题思路

本次分享主要涵盖 Week3 的杂项(Misc)部分,涉及隐写、文件恢复及简单的加密算法还原。以下是具体题目的分析与解法。

1. 白丝上的 flag

题目描述: 出题人赠送 flag 时遭遇信号干扰,在不知名小网站找到了写入 flag 前的图片,尝试还原信息。提示 flag 是单色。

附件分析: 附件包含一张图片和一段 Python 脚本 task.py。脚本逻辑是对图像像素进行混淆处理。

from PIL import Image
import sys

def ez_add(a, b, c, d):
    global iv
    h = (a + b + c + d + iv) % 256
    e = b
    f = c
    g = d
    iv = (b + c + d + iv) % 256
    return e, f, g, h

def confuse(data):
    r, g, b, a = data
    for _ in range(8):
        r, g, b, a = ez_add(r, g, b, a)
    return r, g, b, a

def confuse_image(flag):
    global iv
    iv = flag.getpixel((1, 1))[0]
    img = Image.new('RGBA', (flag.width, flag.height))
    for w in range(img.width):
        for h in range(img.height):
            img.putpixel((w, h), confuse(flag.getpixel((w, h))))
    return img

if __name__ == '__main__':
    iv = 0
    flag = Image.open('./de_image.png')
    img = confuse_image(flag)
    img.save()
'en_image.png'

解密思路:

  1. 逆向混淆函数:confuse 本质是加法运算,可以通过减法逆推。注意 iv 初始值来源于原图 (1, 1) 像素的 R 通道。
  2. 利用单色特点:单色图像的 RGB 值相同,这有助于验证还原结果。

还原脚本:

from PIL import Image

def ez_sub(h, e, f, g):
    global iv
    a = (h - e - f - g - iv) % 256
    iv = (e + f + g + iv) % 256
    return a

def unconfuse(data):
    r, g, b, a = data
    for _ in range(8):
        r = ez_sub(r, g, b, a)
    return r, g, b, a

def unconfuse_image(img):
    global iv
    iv = img.getpixel((1, 1))[0]
    flag = Image.new('RGBA', (img.width, img.height))
    for w in range(img.width):
        for h in range(img.height):
            flag.putpixel((w, h), unconfuse(img.getpixel((w, h))))
    return flag

if __name__ == '__main__':
    iv = 0
    img = Image.open('en_image.png')
    flag = unconfuse_image(img)
    flag.save('de_image_decrypted.png')

运行脚本得到 de_image_decrypted.png 后,使用 Stegsolve 查看 red plane 0 层即可发现 flag。

Flag 位置

最终 Flag:BaseCTF{there_1s_the_flag@}

2. 纯鹿人

题目描述: 附件为一个文档,提示中包含 Base64 编码字符串。

解题过程:

  1. 初步尝试:将文档中的表情包保存后用 WinHex 查看,未发现有明显异常。搜索关键词也未发现直接线索。
  2. 格式转换:参考上周类似题目的解法,尝试将文档后缀改为 .zip。
  3. 文件分离:修改后缀后,使用 WinHex 检查文件头,确认存在 ZIP 结构。使用 foremost 工具进行分离,提取出新的 zip 文件。
  4. 解压获取:分离出的 zip 文件密码为 ikunikun,解压后即可获得 flag。

注:关于此类隐写技巧,可参考相关 CTF-MISC 隐写总结文章。

3. 我要吃火腿!

题目描述: 附件包含一个文本文件和一个图片文件,文本内容看似乱码或特殊符号。

解题过程:

  1. 文本解码:文本内容为兽音咆哮体,通过在线兽音翻译工具解码,获得关键信息。
  2. XOR 解密:根据提示,对图片文件进行 XOR 异或操作。密钥为 Ham 对应的十六进制 [0x48, 0x61, 0x6D]。

解密脚本:

def xor_with_ham_decrypt(input_file, output_file):
    ham_bytes = [0x48, 0x61, 0x6D]
    with open(input_file, 'rb') as f:
        data = bytearray(f.read())
    for i in range(len(data)):
        data[i] ^= ham_bytes[i % 3]
    with open(output_file, 'wb') as f:
        f.write(data)

# 执行解密
xor_with_ham_decrypt('Ham.jpg', 'Hamorl.jpg')
  1. 文件头修复:解密后的 Hamorl.jpg 文件头损坏,无法直接打开。手动修改文件头为 JPEG 标准头 ffd8ffe1 并保存。
  2. 查看结果:修复后的图片正常显示,从中提取 flag。

至此,本周 Misc 部分的解题思路已整理完毕。遇到文件损坏类问题时,记得先检查文件头是否被篡改。

目录

  1. BaseCTF Week3 Web 与 Misc 解题思路
  2. 1. 白丝上的 flag
  3. 2. 纯鹿人
  4. 3. 我要吃火腿!
  5. 执行解密
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • OpenClaw 大龙虾机器人本地部署与配置实战
  • C++ 矩阵翻转与 n*n 矩阵旋转实现
  • Android 开发成长有益的技能推荐
  • Ubuntu 22.04 搭建 PX4 无人机 ROS2 仿真环境 (Micro XRCE-DDS Agent)
  • 谷歌 TurboQuant 内存压缩与 RWKV-6 开源重构大模型部署范式
  • SpringBoot 整合 LangChain4j 与 Tavily 实现联网搜索及 API Key 获取指南
  • FPGA 内部资源详解:LUT、FF、BRAM、DSP、PLL 及综合报告解读
  • R 语言在 AIGC 时代的应用场景与核心优势
  • HarmonyOS 应用间图片分享功能实现
  • 主流 AI 编程助手与 IDE 集成方案选型指南
  • OpenClaw:AI 行动型智能体架构与实现解析
  • HTML Popover API:原生属性实现浮层交互,告别 JS 组件库依赖
  • Python 图片绘制与输出常用库原理详解
  • 基于现代 C++ std::variant 和 std::visit 构建类型安全的有限状态机
  • 《人工智能的底层逻辑》:清华大学张长水教授 AI 通识指南
  • Cookie 与 Session:Web 用户状态管理详解
  • Spring Boot 与 JDK、Maven、MyBatis-Plus、Tomcat 版本对应
  • 数据结构:常见排序算法原理与实现
  • 前端微前端:别让你的应用变成巨石应用
  • Python 调用 SolidWorks API 实现自动化建模示例

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online