论坛首页 安全工具分享区 阅读主题

[原创]2026 年腾讯游戏安全初赛 PC方向

368 浏览 3 回复
#1 楼主 2026-06-01 21:08:54
注:本人草台班子出身属于是那种可以整出效果但是文章过程一坨的 这里文章还要让ai帮我润色的,看了论坛大佬的文章也发现了一堆丢分的点只能说下次努力吧 ,答案以官方公布为准 
这题第一眼看题面就知道不是单纯的用户态程序,真正有东西的是 `ShadowGateSys.sys`,而 `ShadowGateApp.exe` 更像一个控制台壳子,负责发指令、接回包、展示结果。先从题面和字符串把外轮廓摸出来。很快能确定三个关键信息:一是设备名是 `\\.\\ShadowGate`;二是控制台会创建多组命名 Event / Semaphore;三是初始化 IOCTL 会返回迷宫尺寸和起终点坐标。因为驱动混淆挺重,直接静态啃 DeviceIoControl 分支会很慢,所以先用 Frida 把 App 挂起来,把 `CreateFileW / CreateEventW / CreateSemaphoreW / DeviceIoControl` 全部打一遍日志。(这里就是第一个丢分点了连驱动都没有加载,直接就是用户态 hook 抓协议,然后离线模拟驱动逻辑直接恢复了迷宫和最终 flag)这样做的好处是非常直接:哪几个对象被创建了、IOCTL 号是多少、初始化回包长什么样,一眼就能看出来。最终抓到的核心协议是:`0x8001200C` 为初始化,`0x80012004` 为移动,`0x80012008` 为 reset。初始化返回 24 字节,也就是 6 个 `uint32`。真正的迷宫不是 16x16,而是 13x13,终点在 `(12,12)`。图 1  协议抓取与初始化回包解析题面说得很抽象,说系统表面没反馈,但每次 reset 后前五次成功移动会按固定顺序暴露五种漏洞。这个描述其实已经很像引导了:说明泄漏不是随机的,而是状态机。先在用户态日志里把对象名字收集出来,再配合驱动模拟,把 move 分支一层层跑通。最后确认的五类泄漏顺序如下:1. Event 泄漏;2.Semaphore 泄漏;3.TEB 写入泄漏;4.TEB/线程上下文读探测;5.PEB 读探测。这里最坑的一点是,后面三类已经不是简单对象信号了,而是 attach 到用户进程后对 TEB / PEB 做读写,所以如果只盯着事件对象会漏掉一大半。


登录后可查看完整内容

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-290807.htm
#2 2026-06-01 21:08:54
tql
#3 2026-06-01 21:08:54
大佬有可复现的脚本吗
#4 2026-06-01 21:08:54
大佬,样本可以给一份吗

请登录后参与讨论

立即登录 注册账号