m0leCon Beginner CTF2024部分wp
字数 2286 2025-08-22 12:22:30

m0leCon Beginner CTF 2024 部分题目解析与教学文档

Web 题目解析

Cookie Shop

题目描述:进入网站后余额为10,flag价格为1000。查看源码发现注释中泄露了Flask的secret_key。

解题步骤

  1. 检查网站Cookie,发现包含用户余额信息
  2. 对Cookie进行base64解码,得到类似{"balance": 10}的结构
  3. 修改balance值为1000000,然后重新base64编码
  4. 将修改后的值eyJiYWxhbmNlIjogMTAwMDAwMH0=作为新Cookie提交
  5. 购买flag

关键点

  • Flask的session cookie通常使用base64编码
  • 即使有secret_key,有时直接修改base64编码的值也能生效
  • 注意JSON格式中的空格和结构

GoSecureIt

题目描述:源码secret.go中泄露了JWT密钥。

解题步骤

  1. 获取当前JWT token
  2. 使用泄露的密钥schrody_is_always_watching
  3. 在jwt.io网站或本地工具修改role为admin
  4. 使用新生成的token访问特权接口

关键点

  • JWT由header、payload和signature三部分组成
  • 修改payload后需要用相同密钥重新签名
  • 在线工具如jwt.io可以方便地编辑和重新签名JWT

Locked Door

题目描述:需要输入8位密码,通过隐藏路由发现SQL注入点。

解题步骤

  1. 发现隐藏路由/rowmawza
  2. 尝试SQL注入:' OR '1'='1绕过登录
  3. 下载流量包文件
  4. 分析流量包发现RSA加密信息:
    • n: 144866671565187653968436368127956889323
    • e: 65537
    • 密文: 71296054321509316776624970111608994994
  5. 使用SageMathCell分解n并解密:
    n = 144866671565187653968436368127956889323
    e = 65537
    factors = factor(n)
    p, q = factors[0][0], factors[1][0]
    phi_n = (p - 1) * (q - 1)
    d = inverse_mod(e, phi_n)
    ciphertext = 71296054321509316776624970111608994994
    plaintext = power_mod(ciphertext, d, n)
    
  6. 得到密码99004462,解锁门

关键点

  • 隐藏路由是常见CTF技巧
  • SQL注入万能密码' OR '1'='1在简单场景有效
  • 小整数n可以直接分解因数
  • RSA解密需要计算φ(n)和模反元素d

Misc 题目解析

XORed picture

题目描述:PNG图片被16字节随机密钥异或加密。

解题步骤

  1. PNG文件头已知:89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52
  2. 用已知明文与加密文件头异或得到密钥
  3. 用密钥解密整个文件

Python实现

import itertools

def xor(data, key):
    return bytes(a ^ b for a, b in zip(data, itertools.cycle(key)))

with open("flag_enc.png", "rb") as fin:
    ct = fin.read()

magic_number = bytes.fromhex("89504e470d0a1a0a")
first_chunk_type = b'IHDR'
first_chunk_size = (13).to_bytes(4, "big")
known_pt = magic_number + first_chunk_size + first_chunk_type

key = xor(known_pt, ct[:len(known_pt)])
decrypted_data = xor(ct, key)

with open("flag_dec.png", "wb") as fout:
    fout.write(decrypted_data)

关键点

  • 文件格式的固定头部可用于已知明文攻击
  • 异或加密是可逆操作:A ⊕ B = C ⇒ A ⊕ C = B
  • PNG文件结构:8字节签名 + 4字节长度 + 4字节类型(IHDR)

KIRBY'S FLAG

题目描述:GIF动画每帧包含flag的一部分。

解题步骤

  1. 使用工具分解GIF各帧
  2. 识别每帧中的字符
  3. 按帧顺序组合字符:1nh4ling_fl4g5_l1k3_4_b055_15_wh47_k33p5_m3_4l1ve
  4. ptm{}包裹得到flag

关键点

  • GIF动画帧可包含隐藏信息
  • 可能需要图像处理或OCR识别字符
  • 注意帧顺序和特殊字符(如_)

pickle soup

题目描述:Python pickle反序列化漏洞。

解题步骤

  1. 识别pickle.loads存在反序列化漏洞
  2. 构造恶意pickle数据实现RCE
  3. Base64编码后提交

攻击载荷

import base64
a='''V__setstate__(S"cat re*"iossystem.'''
print(base64.b64encode(a.encode()))

关键点

  • pickle反序列化可以执行任意代码
  • 注意题目对输入长度的限制(本题64字节)
  • 使用__reduce____setstate__等魔术方法构造payload

Strange noise

题目描述:音频文件中隐藏摩尔斯电码。

解题步骤

  1. 用Audacity打开音频文件
  2. 查看频谱图,发现700Hz和900Hz间的信号
  3. 使用滤波器隔离目标频率
  4. 导出后使用在线摩尔斯解码器解码

关键点

  • 摩尔斯电码可能在特定频率
  • 频谱分析是音频隐写常见方法
  • 滤波器设置要准确隔离目标信号

PIETcture*

题目描述:与npiet编程语言相关,需要输入密码。

解题思路

  • 题目名提示与Piet语言相关
  • 可能需要分析图像中的颜色变化
  • 尝试常见CTF密码或空输入

A car hacker's first steps

题目描述:CAN总线通信数据分析。

解题步骤

  1. 分析candump.txt文件
  2. 筛选UDS协议的WDBI(写数据)帧和响应帧
  3. 提取数据部分并解码

Python实现

frames = []
with open("candump.txt", "r") as f:
    for line in f:
        frames.append(line.split("#")[1].strip())

for i in range(len(frames) - 1):
    frame = frames[i]
    if frame[2:4] == "2E":  # WDBI帧
        if frames[i + 1][2:4] == "6E":  # 正响应
            print(bytes.fromhex(frame[8:]).decode("utf-8"), end="")

关键点

  • CAN总线数据通常包含时间戳、接口和ID
  • UDS协议中0x2E是写数据请求,0x6E是正响应
  • 数据部分可能需要拼接或进一步处理

总结与学习要点

  1. Web安全

    • Cookie操作和编码(base64)
    • JWT构造和签名
    • SQL注入基础技巧
    • RSA加密原理和实现
  2. 杂项技巧

    • 文件格式分析和已知明文攻击
    • 多媒体文件隐写分析(GIF、PNG、音频)
    • 反序列化漏洞利用
    • 协议分析(CAN总线)
  3. 工具使用

    • base64编解码工具
    • jwt.io在线工具
    • SageMathCell数学计算
    • Audacity音频分析
    • 文件分解工具
  4. 编程技巧

    • Python处理二进制数据
    • 加密算法实现
    • 数据分析脚本编写

这些题目涵盖了CTF比赛的常见题型和解题思路,适合初学者系统学习网络安全和逆向分析的基本技能。

m0leCon Beginner CTF 2024 部分题目解析与教学文档 Web 题目解析 Cookie Shop 题目描述 :进入网站后余额为10,flag价格为1000。查看源码发现注释中泄露了Flask的secret_ key。 解题步骤 : 检查网站Cookie,发现包含用户余额信息 对Cookie进行base64解码,得到类似 {"balance": 10} 的结构 修改balance值为1000000,然后重新base64编码 将修改后的值 eyJiYWxhbmNlIjogMTAwMDAwMH0= 作为新Cookie提交 购买flag 关键点 : Flask的session cookie通常使用base64编码 即使有secret_ key,有时直接修改base64编码的值也能生效 注意JSON格式中的空格和结构 GoSecureIt 题目描述 :源码secret.go中泄露了JWT密钥。 解题步骤 : 获取当前JWT token 使用泄露的密钥 schrody_is_always_watching 在jwt.io网站或本地工具修改role为admin 使用新生成的token访问特权接口 关键点 : JWT由header、payload和signature三部分组成 修改payload后需要用相同密钥重新签名 在线工具如jwt.io可以方便地编辑和重新签名JWT Locked Door 题目描述 :需要输入8位密码,通过隐藏路由发现SQL注入点。 解题步骤 : 发现隐藏路由 /rowmawza 尝试SQL注入: ' OR '1'='1 绕过登录 下载流量包文件 分析流量包发现RSA加密信息: n: 144866671565187653968436368127956889323 e: 65537 密文: 71296054321509316776624970111608994994 使用SageMathCell分解n并解密: 得到密码 99004462 ,解锁门 关键点 : 隐藏路由是常见CTF技巧 SQL注入万能密码 ' OR '1'='1 在简单场景有效 小整数n可以直接分解因数 RSA解密需要计算φ(n)和模反元素d Misc 题目解析 XORed picture 题目描述 :PNG图片被16字节随机密钥异或加密。 解题步骤 : PNG文件头已知: 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 用已知明文与加密文件头异或得到密钥 用密钥解密整个文件 Python实现 : 关键点 : 文件格式的固定头部可用于已知明文攻击 异或加密是可逆操作:A ⊕ B = C ⇒ A ⊕ C = B PNG文件结构:8字节签名 + 4字节长度 + 4字节类型(IHDR) KIRBY'S FLAG 题目描述 :GIF动画每帧包含flag的一部分。 解题步骤 : 使用工具分解GIF各帧 识别每帧中的字符 按帧顺序组合字符: 1nh4ling_fl4g5_l1k3_4_b055_15_wh47_k33p5_m3_4l1ve 用 ptm{} 包裹得到flag 关键点 : GIF动画帧可包含隐藏信息 可能需要图像处理或OCR识别字符 注意帧顺序和特殊字符(如 _ ) pickle soup 题目描述 :Python pickle反序列化漏洞。 解题步骤 : 识别 pickle.loads 存在反序列化漏洞 构造恶意pickle数据实现RCE Base64编码后提交 攻击载荷 : 关键点 : pickle反序列化可以执行任意代码 注意题目对输入长度的限制(本题64字节) 使用 __reduce__ 或 __setstate__ 等魔术方法构造payload Strange noise 题目描述 :音频文件中隐藏摩尔斯电码。 解题步骤 : 用Audacity打开音频文件 查看频谱图,发现700Hz和900Hz间的信号 使用滤波器隔离目标频率 导出后使用在线摩尔斯解码器解码 关键点 : 摩尔斯电码可能在特定频率 频谱分析是音频隐写常见方法 滤波器设置要准确隔离目标信号 PIETcture* 题目描述 :与npiet编程语言相关,需要输入密码。 解题思路 : 题目名提示与Piet语言相关 可能需要分析图像中的颜色变化 尝试常见CTF密码或空输入 A car hacker's first steps 题目描述 :CAN总线通信数据分析。 解题步骤 : 分析candump.txt文件 筛选UDS协议的WDBI(写数据)帧和响应帧 提取数据部分并解码 Python实现 : 关键点 : CAN总线数据通常包含时间戳、接口和ID UDS协议中0x2E是写数据请求,0x6E是正响应 数据部分可能需要拼接或进一步处理 总结与学习要点 Web安全 : Cookie操作和编码(base64) JWT构造和签名 SQL注入基础技巧 RSA加密原理和实现 杂项技巧 : 文件格式分析和已知明文攻击 多媒体文件隐写分析(GIF、PNG、音频) 反序列化漏洞利用 协议分析(CAN总线) 工具使用 : base64编解码工具 jwt.io在线工具 SageMathCell数学计算 Audacity音频分析 文件分解工具 编程技巧 : Python处理二进制数据 加密算法实现 数据分析脚本编写 这些题目涵盖了CTF比赛的常见题型和解题思路,适合初学者系统学习网络安全和逆向分析的基本技能。