GeekGame CTF Write Up
内容提要
本文是北京大学GeekGame CTF参赛者的解题报告,涵盖签到、小北问答、翻车谜语人、在线解压、聊天室、密码学实践等题目。作者记录了利用Wireshark分析流量、RSA选择密文攻击、uwsgi漏洞提权、软链接读取flag等技术细节,并说明部分题目未解出,等待他人题解。
延伸解读
签到题的环境差异与工具选择
作者在签到题中因使用Mac系统而无法完整复制PDF中的整行文本,导致卡题。这提醒CTF选手注意题目环境可能依赖特定操作系统或浏览器,遇到类似问题时可以尝试切换平台或使用其他工具。
小北问答的信息搜集技巧
小北问答涉及多源信息检索,如利用高德地图、百度搜索、公众号文章、crt.sh证书查询等。这些方法展示了如何从公开渠道挖掘线索,对OSINT类题目有参考价值。
智能合约题目的逆向与爆破
在智能合约题目中,作者通过反编译代码、读取存储值,并采用逐4位爆破的方法求解。这体现了在无法直接逆向时,利用运算特性进行爆破的有效性,同时也提醒注意不同工具反编译结果的差异。
流量分析中的隐写与密码还原
翻车谜语人题目要求从流量包中提取信息,包括分析HTTP请求、WebSocket通信,还原加密脚本和密码生成逻辑。这强调了流量分析中细致搜索和还原场景的重要性,尤其是对时间格式等细节的把握。
Q&A
GeekGame CTF 签到题在 Windows 上如何快速解出?
在 Windows 系统中使用 Edge 浏览器,双击选中题目给出的两行内容,复制到浏览器地址栏即可得到明文,然后将明文按原有顺序上下排序即可得到 FLAG。
翻车的谜语人题目中,如何从流量包中提取并解密 FLAG1?
用 Wireshark 打开流量包,搜索 flag 找到包含 Untitled.ipynb 的 HTTP 请求,从中提取 key 和 flag1.txt 内容,然后使用 XOR 解密即可得到 FLAG1。
在线解压网站题目是如何利用软链接读取 flag 的?
通过创建指向 /flag 的软链接文件(如 ln -s /flag ./test),然后将该软链接文件压缩并上传到服务器,服务器解压后即可读取到 flag。
早期人类的聊天室题目中,如何利用 uwsgi 漏洞提权?
通过任意文件读取获取 uwsgi 配置文件路径,利用 uwsgi 的 RCE 漏洞,向 127.0.0.1:3031 发送构造的 payload,修改 uwsgi 配置文件并重启 uwsgi 进程,借助 supervisor 以 root 权限运行,从而读取 /flag。
密码学实践题目中,FLAG2 的选择密文攻击是如何实现的?
利用 RSA 的选择密文攻击,构造一个明文为 Alice 的密文:选择与 N 互素的 X,计算 Y = M * X^e mod N,发送 Y 给服务器获得 Z = Y^d mod N,然后通过 (Z + iN) % X == 0 计算出 C,将 C 发送给 Richard 即可获得 FLAG2。
翻车的谜语人题目中,FLAG2 的压缩包密码是如何得到的?
在流量包的 websocket 包中找到压缩包生成命令,密码格式为 Wakarimasu! `date` `uname -nom` `nproc`,根据流量包中的生成时间、虚拟机名、系统架构和线程数,组合出正确密码,如 Wakarimasu! Sat 06 Nov 2021 03:44:15 PM CST you-kali-vm x86_64 GNU/Linux 8。