2025XYCTF部分wp
字数 2788 2025-08-30 06:50:28

2025XYCTF比赛部分题目解析与教学文档

目录

  1. Misc类题目
  2. Web类题目
  3. Reverse类题目
  4. Crypto类题目
  5. PWN类题目

Misc类题目

问卷

解题方法

  • 直接访问提供的问卷链接填写即可
  • 链接:https://www.wjx.cn/vm/r8BpK59.aspx

XGCTF

解题步骤

  1. 访问提供的博客链接:https://www.cnblogs.com/LAMENTXU/p/18691608
  2. 查找"年终总结"相关内容
  3. 在博客页面源码中查找flag
  4. 找到flag:flag{1t_I3_t3E_s@Me_ChAl1eNge_aT_a1L_P1e@se_fOrg1ve_Me}

会飞的雷克萨斯

解题方法

  1. 分析附件中的建筑图片
  2. 通过地图比对确定位置
  3. 结合信息得到最终flag:flag{四川省内江市资中县春岚北路中铁城市中心内}

曼波曼波曼波

解题步骤

  1. 观察txt文件内容,类似base64但无法直接解码
  2. 发现等号在最前面,进行字符串逆序
  3. 对逆序后的字符串进行base64解码
  4. 解码后得到图片数据,保存为png文件

Python代码

import base64

with open('smn.txt', 'r') as f:
    line = f.readline().strip()

reversed_line = line[::-1]

try:
    image_data = base64.b64decode(reversed_line)
except Exception as e:
    print("Base64 解码失败:", e)
    exit(1)

with open('1.png', 'wb') as img_file:
    img_file.write(image_data)
print("已成功保存为 1.png")

MADer也要当ctfer

解题步骤

  1. 分析mkv视频文件,发现播放长度不同
  2. 尝试调整视频参数无果
  3. 提取视频字幕流(ass文件)
  4. 使用脚本将二进制文件转为16进制
  5. 在乱码中发现异常数据
  6. 最终flag:XYCTF{easy_yin_xie_dfbfuj877}

Web类题目

ezsql(手动滑稽)

解题步骤

  1. 发现时间盲注漏洞点
  2. 测试发现过滤了空格、逗号等字符,但sleep函数可用
  3. 编写盲注脚本逐步获取数据
  4. 获取关键key:dtfrtkcc0czkoua9S
  5. 利用key进入RCE环节
  6. 源码中有提示但存在WAF

Signin

漏洞分析

  1. 存在两个路由:
    • /download:任意文件读取
    • /secret:获取cookie字段值,存在pickle反序列化
  2. 需要先读取secret.txt,但存在WAF
  3. WAF绕过方法:使用./.././../secret.txt路径
  4. 伪造pickle反序列化流实现攻击

ez_puzzle

解题步骤

  1. 通过view-source://访问页面源代码
  2. 保存源码并下载图片,本地部署项目
  3. 修改条件判断,使alert弹出flag
  4. 根据描述"两秒内解决问题",猜测直接进入if语句可获取flag
  5. 本地完成拼图即可

出题人已疯

解题方法

  1. 需要短payload读取/flag文件
  2. 尝试绕过长度限制:
    • 使用特殊字符:{{open('/flag').read()}}接近25字符
    • 尝试全角字符但会超长
    • 使用Unicode拉丁补充字符:%BA(URL编码)
  3. 最终payload:/attack?payload={{%BApen(%27/flag%27).read()}}
  4. 获取flag:flag{L@men7XU_d0es_n0t_w@nt_t0_g0_t0_scho01}

fate

解题步骤

  1. 分析app.py和init_db.py
  2. 发现/proxy路由存在SSRF漏洞,但有严格过滤
  3. 绕过方法:
    • 使用@0:8080使前面URL无效
    • 二次URL编码绕过字母限制:%2561%2562%2563...
  4. 处理第二个参数:
    • 通过8位二进制数分段处理
    • 使用C语言代码实现绕过
  5. SQL注入绕过:
    • 使用字典类型绕过WAF:{"name":{"')":"a"}}
    • 利用JSON处理非字符串的差异
    • 构造union查询获取flag

出题人又疯

解题方法

  1. 类似"出题人已疯"题目
  2. 使用特殊字符绕过:
    • payload:{{%BApen(%27/flag%27).re%aad()}}
  3. 获取flag:flag{L@men7XU_d0es_n0t_w@nt_t0_t@ke_@ny_f**king_exams}

Now you see me 1

解题步骤

  1. 利用request对象的残余属性:
    • request.mimetype - Content-Type
    • request.origin - Origin
    • request.referrer - Referer
    • request.endpoint - 代码函数相关
  2. 通过索引获取特定字符:
    • request.endpoint.4获取下划线_
  3. 构造config链获取eval:
    {%print(config|attr('__class__')|attr('__init__')|attr('__builtins__')|attr('__getitem__')('eval'))%}
    
  4. 执行命令读取flag:
    • flag文件很大,分块base64读取:
      base64 /flag_h3r3 | cut -c1-50
      base64 /flag_h3r3 | cut -c51-100
      
    • 或使用dd命令:
      dd if=/flag_h3r3 bs=1 count=50 2>/dev/null | base64
      
  5. 最终flag:flag{N0w_y0u_sEEEEEEEEEEEEEEE_m3!!!!!!}

Reverse类题目

WARMUP

解题步骤

  1. 分析得到RC4加密脚本
  2. 题目提供了密钥
  3. 解密得到:flag{We1c0me_t0_XYCTF_2025_reverse_ch@lleng3_by_th3_w@y_p3cd0wn's_chall_is_r3@lly_gr3@t_&_fuN!}
  4. 根据提示转为:XYCTF{5f9f46c147645dd1e2c8044325d4f93c}

Dragon

解题步骤

  1. 检查文件发现是LLVM bitcode
  2. 在Windows VS环境中使用clang编译:
    clang Dragon.bc -o Dragon.exe
    
  3. 遇到问题时可先编译为汇编再转为exe

Moon

解题步骤

  1. 分析pyd文件
  2. 发现是异或加密,有随机数种子和密文
  3. 外部调用pyd的crypt函数进行解密

Crypto类题目

Division

解题方法

  • 直接运行提供的脚本生成结果

PWN类题目

Ret2libc' Revenge

漏洞利用

  1. 发现无限制溢出漏洞
  2. 寻找可用gadget泄露libc
  3. 使用puts函数泄露libc地址
  4. 关键gadget:
    • 0x0000000000401180 : mov rdi, rsi ; ret
  5. 控制rbp+0x20位置为5,使rsi加5
  6. 将rsi赋值给rdi
  7. 泄露libc后,设置rsi和rdx为0
  8. 使用libc中的gadget完成利用

girlfriend

解题方法

  • 题目描述不完整,需进一步分析

以上是2025XYCTF比赛部分题目的详细解析和教学文档,涵盖了Misc、Web、Reverse、Crypto和PWN等多个类别。每个题目都提供了关键解题思路和具体实现方法,希望对CTF学习者有所帮助。

2025XYCTF比赛部分题目解析与教学文档 目录 Misc类题目 问卷 XGCTF 会飞的雷克萨斯 曼波曼波曼波 MADer也要当ctfer Web类题目 ezsql(手动滑稽) Signin ez_ puzzle 出题人已疯 fate 出题人又疯 Now you see me 1 Reverse类题目 WARMUP Dragon Moon Crypto类题目 Division PWN类题目 Ret2libc' Revenge girlfriend Misc类题目 问卷 解题方法 : 直接访问提供的问卷链接填写即可 链接:https://www.wjx.cn/vm/r8BpK59.aspx XGCTF 解题步骤 : 访问提供的博客链接:https://www.cnblogs.com/LAMENTXU/p/18691608 查找"年终总结"相关内容 在博客页面源码中查找flag 找到flag: flag{1t_I3_t3E_s@Me_ChAl1eNge_aT_a1L_P1e@se_fOrg1ve_Me} 会飞的雷克萨斯 解题方法 : 分析附件中的建筑图片 通过地图比对确定位置 结合信息得到最终flag: flag{四川省内江市资中县春岚北路中铁城市中心内} 曼波曼波曼波 解题步骤 : 观察txt文件内容,类似base64但无法直接解码 发现等号在最前面,进行字符串逆序 对逆序后的字符串进行base64解码 解码后得到图片数据,保存为png文件 Python代码 : MADer也要当ctfer 解题步骤 : 分析mkv视频文件,发现播放长度不同 尝试调整视频参数无果 提取视频字幕流(ass文件) 使用脚本将二进制文件转为16进制 在乱码中发现异常数据 最终flag: XYCTF{easy_yin_xie_dfbfuj877} Web类题目 ezsql(手动滑稽) 解题步骤 : 发现时间盲注漏洞点 测试发现过滤了空格、逗号等字符,但sleep函数可用 编写盲注脚本逐步获取数据 获取关键key: dtfrtkcc0czkoua9S 利用key进入RCE环节 源码中有提示但存在WAF Signin 漏洞分析 : 存在两个路由: /download :任意文件读取 /secret :获取cookie字段值,存在pickle反序列化 需要先读取secret.txt,但存在WAF WAF绕过方法:使用 ./.././../secret.txt 路径 伪造pickle反序列化流实现攻击 ez_ puzzle 解题步骤 : 通过 view-source:// 访问页面源代码 保存源码并下载图片,本地部署项目 修改条件判断,使alert弹出flag 根据描述"两秒内解决问题",猜测直接进入if语句可获取flag 本地完成拼图即可 出题人已疯 解题方法 : 需要短payload读取/flag文件 尝试绕过长度限制: 使用特殊字符: {{open('/flag').read()}} 接近25字符 尝试全角字符但会超长 使用Unicode拉丁补充字符: %BA (URL编码) 最终payload: /attack?payload={{%BApen(%27/flag%27).read()}} 获取flag: flag{L@men7XU_d0es_n0t_w@nt_t0_g0_t0_scho01} fate 解题步骤 : 分析app.py和init_ db.py 发现 /proxy 路由存在SSRF漏洞,但有严格过滤 绕过方法: 使用 @0:8080 使前面URL无效 二次URL编码绕过字母限制: %2561%2562%2563... 处理第二个参数: 通过8位二进制数分段处理 使用C语言代码实现绕过 SQL注入绕过: 使用字典类型绕过WAF: {"name":{"')":"a"}} 利用JSON处理非字符串的差异 构造union查询获取flag 出题人又疯 解题方法 : 类似"出题人已疯"题目 使用特殊字符绕过: payload: {{%BApen(%27/flag%27).re%aad()}} 获取flag: flag{L@men7XU_d0es_n0t_w@nt_t0_t@ke_@ny_f**king_exams} Now you see me 1 解题步骤 : 利用request对象的残余属性: request.mimetype - Content-Type request.origin - Origin request.referrer - Referer request.endpoint - 代码函数相关 通过索引获取特定字符: 如 request.endpoint.4 获取下划线 _ 构造config链获取eval: 执行命令读取flag: flag文件很大,分块base64读取: 或使用dd命令: 最终flag: flag{N0w_y0u_sEEEEEEEEEEEEEEE_m3!!!!!!} Reverse类题目 WARMUP 解题步骤 : 分析得到RC4加密脚本 题目提供了密钥 解密得到: flag{We1c0me_t0_XYCTF_2025_reverse_ch@lleng3_by_th3_w@y_p3cd0wn's_chall_is_r3@lly_gr3@t_&_fuN!} 根据提示转为: XYCTF{5f9f46c147645dd1e2c8044325d4f93c} Dragon 解题步骤 : 检查文件发现是LLVM bitcode 在Windows VS环境中使用clang编译: 遇到问题时可先编译为汇编再转为exe Moon 解题步骤 : 分析pyd文件 发现是异或加密,有随机数种子和密文 外部调用pyd的crypt函数进行解密 Crypto类题目 Division 解题方法 : 直接运行提供的脚本生成结果 PWN类题目 Ret2libc' Revenge 漏洞利用 : 发现无限制溢出漏洞 寻找可用gadget泄露libc 使用puts函数泄露libc地址 关键gadget: 0x0000000000401180 : mov rdi, rsi ; ret 控制 rbp+0x20 位置为5,使rsi加5 将rsi赋值给rdi 泄露libc后,设置rsi和rdx为0 使用libc中的gadget完成利用 girlfriend 解题方法 : 题目描述不完整,需进一步分析 以上是2025XYCTF比赛部分题目的详细解析和教学文档,涵盖了Misc、Web、Reverse、Crypto和PWN等多个类别。每个题目都提供了关键解题思路和具体实现方法,希望对CTF学习者有所帮助。