2022UNCTF部分wp
字数 1938 2025-08-06 18:07:54

UNCTF 2022 部分题目解析与教学文档

Web 题目解析

1. 我太喜欢bilibili大学啦(中北大学)

解题思路

  • 题目环境:PHP界面
  • 关键点:flag存储在环境变量中
  • 简单解法:直接搜索"flag"即可获取

修复版解题

  1. 首页base64解码得到提示:admin_unctf.php
  2. 访问该页面发现登录框
  3. 在header中找到第二个base64提示,解码得到账户密码
  4. 登录后可post账户密码,通过cookie传值执行system命令
  5. 使用压缩flag文件夹到web目录下载的方法获取flag

2. ezgame(浙江师范大学)

解题思路

  1. 游戏玩法:
    • 前期:增加生命值和数量
    • 后期:增加攻击力、能量和防御
    • 避免使用单体攻击
  2. 替代解法:
    • 检查main.js文件
    • 搜索"UNCTF"找到相关函数
    • 执行该函数直接获取flag

3. ezunseri(西华大学)

反序列化利用链

  1. 构造链:Login->key(Exec)->content(Test)->test(Exec)
  2. 绕过__wakeup:修改对象属性数量
  3. 最终payload:
?pop=O:5:"Login":2:{s:4:"code";s:9:"3.1415926";s:3:"key";O:4:"Exec":2:{s:7:"content";O:4:"Test":1:{s:4:"test";O:4:"Exec":2:{s:7:"content";s:20:"system("cat /flag");";}}}}

4. 听说php有一个xxe(西南科技大学)

利用方法

  1. 获取提示:访问/hint
  2. 利用PHP 7.0的XXE漏洞
  3. 使用file协议读取flag

5. babyphp(中国人民公安大学)

考察点

  1. POST/GET传参
  2. PHP弱类型比较:a==0a!==0(使用"0a")
  3. sha1数组绕过:传入数组使sha1返回NULL
  4. WAF绕过:通过引用参数方式绕过检查
code=eval($_GET[b]);&b=system("cat flag.txt");

6. easy ssti(金陵科技学院)

解题步骤

  1. 发现class被过滤
  2. 使用lipsum的globals访问os模块
  3. 最终payload:
{{lipsum.__globals__.__getitem__("os").popen("env").read()}}

注:flag藏在环境变量中

7. poppop(中国人民公安大学)

反序列化利用

  1. 构造链:B->key(C)->key2(A)
  2. 注意private变量处理
  3. 最终payload:
poc=O:1:"B":1:{s:3:"key";O:1:"C":1:{s:7:"%00C%00key2";O:1:"A":2:{s:4:"code";s:14:"system('env');";}}}

Pwn 题目解析

1. welcomeUNCTF2022

解法:直接nc连接并输入"UNCTF&2022"

2. 石头剪刀布(西华大学)

伪随机数预测

  1. 使用srand(0xA)初始化随机数生成器
  2. 生成前100个随机数并记录
  3. 编写脚本自动应答

3. move your heart(中国计量大学现代科技学院)

栈迁移利用

  1. 第一次read布置rop链
  2. 第二次read控制返回地址
  3. 使用leave ret控制执行流

4. checkin(珠海科技学院)

整数溢出绕过

  • 使用空格绕过负号检查:发送" -1"

5. int 0x80(中国计量大学现代科技学院)

纯字符shellcode

sc = b'Ph0666TY1131Xh333311k13XjiV11Hc1ZXYf1TqIHf9kDqW02DqX0D1Hu3M2G0Z2o4H0u0P160Z0g7O0Z0C100y5O3G020B2n060N4q0n2t0B0001010H3S2y0Y0O0n0z01340d2F4y8P115l1n0J0h0a070t'

Re 题目解析

1. whereisyourkey(广东海洋大学)

解法

  1. flag在v5数组中
  2. 修改关键判断为jmp指令绕过检查
  3. 直接运行程序获取flag

2. ezzzzre(广东海洋大学)

解法

  1. UPX脱壳
  2. 解密算法:
x = 'HELLOCTF'
flag = ''
for i in x:
    flag += chr(2*ord(i)-69)

Crypto 题目解析

1. md5-1

解法

  1. 构建字符到md5的映射表
  2. 比对密文获取原始字符
  3. 拼接得到flag格式

2. Dddd

解法

  1. 将数字替换为莫斯码(1→.,0→-)
  2. 莫斯解码获取flag

3. caesar

解法

  1. 已知开头为"UNCTF"确定偏移量
  2. 自定义字母表包含大小写字母、数字和+/符号
  3. 计算偏移量为19

4. ezxor(多次一密)

解法

  1. 利用空格特性(字母异或空格仍为字母)
  2. 统计各位置可能为空格的情况
  3. 推导key值
  4. 最终key:UNCTF{Y0u_are_very_Clever!!!}

5. ezRSA

解法

  1. 分解n=p^4
  2. 计算phi = p^4 - p^3
  3. 正常RSA解密

Misc 题目解析

1. magic_word

解法:修改编码方式为UTF-8后零宽解码

2. syslog

解法:解压后搜索"password",base64解码获取flag

3. 巨鱼

解题步骤

  1. 修改图片高度获取解压密码:"无所谓我会出手"
  2. 修复zip文件头
  3. 密码为"666"(C6H6Cl6)
  4. 在PPT空白处找到flag

4. 社什么社

解法:识别图片为凤凰古城,计算md5提交

5. In_the_Morse_Garden(陆军工程大学)

解题步骤

  1. 从PDF中复制隐藏文本
  2. Base64解码得到"依古比古"和"玛卡巴卡"的重复
  3. 替换为莫斯码(依古比古→.,玛卡巴卡→-)
  4. 莫斯解码获取flag

以上为UNCTF 2022部分题目的详细解析,涵盖了Web、Pwn、Re、Crypto和Misc等多个方向的关键解题思路和技术要点。

UNCTF 2022 部分题目解析与教学文档 Web 题目解析 1. 我太喜欢bilibili大学啦(中北大学) 解题思路 : 题目环境:PHP界面 关键点:flag存储在环境变量中 简单解法:直接搜索"flag"即可获取 修复版解题 : 首页base64解码得到提示:admin_ unctf.php 访问该页面发现登录框 在header中找到第二个base64提示,解码得到账户密码 登录后可post账户密码,通过cookie传值执行system命令 使用压缩flag文件夹到web目录下载的方法获取flag 2. ezgame(浙江师范大学) 解题思路 : 游戏玩法: 前期:增加生命值和数量 后期:增加攻击力、能量和防御 避免使用单体攻击 替代解法: 检查main.js文件 搜索"UNCTF"找到相关函数 执行该函数直接获取flag 3. ezunseri(西华大学) 反序列化利用链 : 构造链:Login->key(Exec)->content(Test)->test(Exec) 绕过__ wakeup:修改对象属性数量 最终payload: 4. 听说php有一个xxe(西南科技大学) 利用方法 : 获取提示:访问/hint 利用PHP 7.0的XXE漏洞 使用file协议读取flag 5. babyphp(中国人民公安大学) 考察点 : POST/GET传参 PHP弱类型比较: a==0 且 a!==0 (使用"0a") sha1数组绕过:传入数组使sha1返回NULL WAF绕过:通过引用参数方式绕过检查 6. easy ssti(金陵科技学院) 解题步骤 : 发现class被过滤 使用lipsum的globals访问os模块 最终payload: 注:flag藏在环境变量中 7. poppop(中国人民公安大学) 反序列化利用 : 构造链:B->key(C)->key2(A) 注意private变量处理 最终payload: Pwn 题目解析 1. welcomeUNCTF2022 解法 :直接nc连接并输入"UNCTF&2022" 2. 石头剪刀布(西华大学) 伪随机数预测 : 使用srand(0xA)初始化随机数生成器 生成前100个随机数并记录 编写脚本自动应答 3. move your heart(中国计量大学现代科技学院) 栈迁移利用 : 第一次read布置rop链 第二次read控制返回地址 使用leave ret控制执行流 4. checkin(珠海科技学院) 整数溢出绕过 : 使用空格绕过负号检查:发送" -1" 5. int 0x80(中国计量大学现代科技学院) 纯字符shellcode : Re 题目解析 1. whereisyourkey(广东海洋大学) 解法 : flag在v5数组中 修改关键判断为jmp指令绕过检查 直接运行程序获取flag 2. ezzzzre(广东海洋大学) 解法 : UPX脱壳 解密算法: Crypto 题目解析 1. md5-1 解法 : 构建字符到md5的映射表 比对密文获取原始字符 拼接得到flag格式 2. Dddd 解法 : 将数字替换为莫斯码(1→.,0→-) 莫斯解码获取flag 3. caesar 解法 : 已知开头为"UNCTF"确定偏移量 自定义字母表包含大小写字母、数字和+/符号 计算偏移量为19 4. ezxor(多次一密) 解法 : 利用空格特性(字母异或空格仍为字母) 统计各位置可能为空格的情况 推导key值 最终key: UNCTF{Y0u_are_very_Clever!!!} 5. ezRSA 解法 : 分解n=p^4 计算phi = p^4 - p^3 正常RSA解密 Misc 题目解析 1. magic_ word 解法 :修改编码方式为UTF-8后零宽解码 2. syslog 解法 :解压后搜索"password",base64解码获取flag 3. 巨鱼 解题步骤 : 修改图片高度获取解压密码:"无所谓我会出手" 修复zip文件头 密码为"666"(C6H6Cl6) 在PPT空白处找到flag 4. 社什么社 解法 :识别图片为凤凰古城,计算md5提交 5. In_ the_ Morse_ Garden(陆军工程大学) 解题步骤 : 从PDF中复制隐藏文本 Base64解码得到"依古比古"和"玛卡巴卡"的重复 替换为莫斯码(依古比古→.,玛卡巴卡→-) 莫斯解码获取flag 以上为UNCTF 2022部分题目的详细解析,涵盖了Web、Pwn、Re、Crypto和Misc等多个方向的关键解题思路和技术要点。