2021腾讯游戏安全技术初赛pc客户端安全R3

参赛网址:

1、2021腾讯游戏技术竞赛

 

使用到的源码:

2021腾讯游戏安全技术初赛pc客户端安全.7z

 

参考资料:

1、个人整理的CTF相关攻防知识要点

2、2021腾讯游戏安全竞赛初赛题解

3、OpenGL

4、OpenGL的运行环境配置

5、Visual Studio Community 2017 配置 OpenGL 环境 (NuGet)

6、OpenGL之——摄像机(一)

7、gl.h included before glew.h

8、OpenGL函数大全

9、LearnOpenGL学习笔记—入门:复习与总结

10、OpenGL入门1.7:摄像机

 

预备知识:

JPEG (jpg),   文件头:FFD8FF       文件尾:FF D9

PNG (png),  文件头:89504E47 文件尾:AE 42 60 82

 

1、简单搭建一个OpenGL环境(可选)

网络上教你配置OpenGL环境很麻烦,下载GLFW、GLEW等等。

其实VS可以一键搞定,VS右键项目管理NuGet程序包,选择对应的包即可

 使用的源码只需要导入如下几个包即可

 

2、分析WinMain

程序读取自身两处地址内容

1、1  读自身数据偏移量:67E00 Size:2D26B 范围:67E00-9506B

文件头:FF D8 FE F1,结尾是:FF D9

我们可以判断它是JPEG文件

修改后缀打开图片如下

1、2 读自身数据偏移量:9506B Size:9F97 范围:9506B-9F002

文件头:89504E47 文件尾:AE 42 60 82

我们可以判断它是PNG文件

修改后缀打开图片如下

 

3、分析sub_4064D0函数

1、基础操作初始化之类的

2、注册了鼠标移动回调

判断角度合法性

3、加载自定义图片

4、渲染箱子(唯一不同的地方)

4、1 cubePositions的参数是

开始:0x20D000

结束:0x20FFC4

我们直接将这部分数据dump下来,保存到本地。然后OpenFile,再ReadFile读出来,就可以得到结果直接套用摄像机(Camera)的源码即可,只要两处地方就可以

1、CubePositions数组内容

2、CubePositions数组个数

 

4、获取结果多种方法1:

直接修改矩形的缩放X、Y、Z坐标突破程序极限

初始化:X=0、Y=0、Z=3

其中464CC4 = X、464CC8 = Y、464CCC = Z,通过修改缩放直接就可以定位到结果

源码:

通过修改X.Y.Z坐标可以粗略看到Flag:dogo?

继续针对最后一个字母缩放,发现是d,所以最终结果是dogod

 

4、1 获取结果多种方法2:

源码修改法,我们发现腾讯的CTF和前面那个摄像的源代码基本一直,我们只要修改掉CubePositions即可实现同样的功能。然后再自己移动下即可

修改地方1:将源程序的起点-结束地方的CubePositions数据dump出来,然后读取

修改的地方2:渲染箱子的循环的个数修改成实际的个数(0X3FB)

最终结果,自己慢慢左右移动下即可找到答案

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值