首页 > 其他分享 >强网杯2022 GameMaster

强网杯2022 GameMaster

时间:2023-03-30 20:45:34浏览次数:40  
标签:加密 Key sol len 强网杯 range 2022 GameMaster cmp

这个题去年把我搞得很惨,比赛就因为它坐牢。恰好这几天又看见了,于是决定一雪前耻,狠狠的复现出来

这个题用dnspy这个软件很容易反编译,拖进去后可以得到

这个界面,找到main函数,main函数是整个程序最开始执行的地方,下面就是一坨,我们找到最可疑的地方

这里的consolekey的意思是接收键盘输入,而escape这个键明显和别的键不一样,它进入了一个函数veifyCode里面,我们跟进去看

可以看见这个函数又调用了一个函数goldFunc,跟进去看看发现又是一坨,但是仔细看就能看见两个不一样的分支

这个分支里面有一个key和ECB,ECB是加密模式,再加上有paddingmode.zero这个标准的AES标志,基本可以确定这里用了AES加密

这个则使用了一个简单的异或加密,加密方法有了,那么密文是什么呢?

这个时候我们看见了program,点进去

可以看见这段代码打开了gamemassage这个文件,然后把这个文件的各个属性都给到了program,由此可知密文即为gamemassage

解密得到一大串文件

随便找一个后缀导出,拖进十六进制查看器就可以找到MZ标记,把从MZ标记往后的所有十六进制串dump下来,即可得到新的exe文件

把新的exe文件再次拖进dnspy,就会很清晰的得到加密逻辑

写脚本解密

from z3 import *

sol = Solver()
xorkey = [60, 100, 36, 86, 51, 251, 167, 108, 116, 245, 207, 223, 40, 103, 34, 62, 22, 251, 227]
cmp = [101, 5, 80, 213, 163, 26, 59, 38, 19, 6, 173, 189, 198, 166, 140, 183, 42, 247, 223, 24, 106, 20, 145, 37, 24, 7,
       22, 191, 110, 179, 227, 5, 62, 9, 13, 17, 65, 22, 37, 5]

x = BitVec('x', 63)
y = BitVec('y', 63)
z = BitVec('z', 63)
dup = [x, y, z]

arr = [BitVecVal(0, 63) for i in range(len(cmp))]
num = -1
for i in range(320):
    x = (((x >> 29 ^ x >> 28 ^ x >> 25 ^ x >> 23) & 1) | x << 1)
    y = (((y >> 30 ^ y >> 27) & 1) | y << 1)
    z = (((z >> 31 ^ z >> 30 ^ z >> 29 ^ z >> 28 ^ z >> 26 ^ z >> 24) & 1) | z << 1)
    if i % 8 == 0:
        num = num + 1
    arr[num] = ((arr[num] << 1) | (
        ((z >> 32 & 1 & (x >> 30 & 1)) ^ (((z >> 32 & 1) ^ 1) & (y >> 31 & 1))) & 0xffffffff) & 0xff)

for i in range(len(cmp)):
    sol.add(cmp[i] == arr[i])

assert sol.check() == sat
sol = sol.model()
fake = [sol.eval(i).as_long() & 0xffffffff for i in dup]
Key = [0] * 12
for i in range(3):
    for j in range(4):
        Key[i * 4 + j] = fake[i] >> j * 8 & 255
print(bytearray([(xorkey[i] ^ Key[i % len(Key)]) & 255 for i in range(len(xorkey))]))

得到flag

flag{Y0u_@re_G3meM3s7er!}

标签:加密,Key,sol,len,强网杯,range,2022,GameMaster,cmp
From: https://www.cnblogs.com/fuxuqiannian/p/17274218.html

相关文章

  • PfSense pfBlockerNG 未授权RCE漏洞(CVE-2022-31814)
    PfSensepfBlockerNG未授权RCE漏洞(CVE-2022-31814)概述PfSense系统的插件pfBlockerNG引起的未授权RCE漏洞pfSense是一个基于FreeBSD操作系统开发的防火墙和路由器软件......
  • 2022icpc ec-final 游了记
    目录3.23day-13.24day03.25day13.26day23.27day3承上NOI2021退役记(密码123456):https://www.cnblogs.com/gmh77/p/15079696.html老年人的大学生活3.23day-1下午鸽......
  • Visual Studio2022微软白名单免杀dump lsass
    1.DumpMinitool获取地址阿里云盘:https://www.aliyundrive.com/s/qk5zmwQm1Mj提取码:hy87DumpMinitool所在路径:D:\XXX\VisualStudioPro_2022\VisualStudio\Common7\ID......
  • 【题解】[SDOI/SXOI2022] 小 N 的独立集(dp of dp)
    题目分析:就借助这个题稍微说一下\(dp\)套\(dp\)。对于\(dp\)套\(dp\)其解决的问题是:若给定某一具体情况则答案十分好求,现要求对于所有的情况的答案进行统计。这......
  • 海外工具站 2022 复盘:商业认知篇
    关于商业认知2022年复盘了过去几年的项目经历:很多项目商业都没开始就死了,能商业化闭环&能持续一段时间的一只手数量都没有。从2022年几个月陆续复盘中,收获了不少商......
  • Visual Studio2022微软白名单免杀dump lsass
    1.DumpMinitool获取地址阿里云盘:https://www.aliyundrive.com/s/qk5zmwQm1Mj提取码:hy87DumpMinitool所在路径:D:\XXX\VisualStudioPro_2022\VisualStudio\Common7\ID......
  • windows2022远程桌面连接管理员已结束会话解决方法
    “您的远程桌面会话已结束您的远程桌面会话已结束,可能是下列原因之一:管理员已结束了会话。在建立连接时发生错误。发生网络问题。”今天有台服务器连不上,提示这个。......
  • P8774 [蓝桥杯 2022 省 A] 爬树的甲壳虫(概率DP)
    [蓝桥杯2022省A]爬树的甲壳虫题目描述有一只甲壳虫想要爬上一颗高度为\(n\)的树,它一开始位于树根,高度为\(0\),当它尝试从高度\(i-1\)爬到高度为\(i\)的位置......
  • 安装Windows Server 2022 - 初学者系列 - 学习者系列文章
          这天要写一个关于系统部署的系列文章,涉及到WindowsServer2022操作系统的安装,所以就写了此文。Windows系列的操作系统安装,以前的博文中都有介绍,这里再次做一......
  • Audition 2022 for mac (au音频编辑) v22.6中文版
    Audition2022中文版已更新,au用于创建、混合、编辑和恢复音频内容的多轨、波形和频谱显示,最新创建、混合、编辑和恢复音频内容的多轨、波形和频谱显示,这款功能强大的音频工......