2025XYCTF部分wp
字数 2788 2025-08-30 06:50:28
2025XYCTF比赛部分题目解析与教学文档
目录
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代码:
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
解题步骤:
- 分析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
- 使用字典类型绕过WAF:
出题人又疯
解题方法:
- 类似"出题人已疯"题目
- 使用特殊字符绕过:
- payload:
{{%BApen(%27/flag%27).re%aad()}}
- payload:
- 获取flag:
flag{L@men7XU_d0es_n0t_w@nt_t0_t@ke_@ny_f**king_exams}
Now you see me 1
解题步骤:
- 利用request对象的残余属性:
request.mimetype- Content-Typerequest.origin- Originrequest.referrer- Refererrequest.endpoint- 代码函数相关
- 通过索引获取特定字符:
- 如
request.endpoint.4获取下划线_
- 如
- 构造config链获取eval:
{%print(config|attr('__class__')|attr('__init__')|attr('__builtins__')|attr('__getitem__')('eval'))%} - 执行命令读取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
- flag文件很大,分块base64读取:
- 最终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编译:
clang Dragon.bc -o Dragon.exe - 遇到问题时可先编译为汇编再转为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学习者有所帮助。