强网杯2022 GameMaster

打印 上一主题 下一主题

主题 513|帖子 513|积分 1549

这个题去年把我搞得很惨,比赛就因为它坐牢。恰好这几天又看见了,于是决定一雪前耻,狠狠的复现出来
这个题用dnspy这个软件很容易反编译,拖进去后可以得到

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

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

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

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

这个则使用了一个简单的异或加密,加密方法有了,那么密文是什么呢?
这个时候我们看见了program,点进去

可以看见这段代码打开了gamemassage这个文件,然后把这个文件的各个属性都给到了program,由此可知密文即为gamemassage
解密得到一大串文件
随便找一个后缀导出,拖进十六进制查看器就可以找到MZ标记,把从MZ标记往后的所有十六进制串dump下来,即可得到新的exe文件
把新的exe文件再次拖进dnspy,就会很清晰的得到加密逻辑


写脚本解密
  1. from z3 import *
  2. sol = Solver()
  3. xorkey = [60, 100, 36, 86, 51, 251, 167, 108, 116, 245, 207, 223, 40, 103, 34, 62, 22, 251, 227]
  4. 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,
  5.        22, 191, 110, 179, 227, 5, 62, 9, 13, 17, 65, 22, 37, 5]
  6. x = BitVec('x', 63)
  7. y = BitVec('y', 63)
  8. z = BitVec('z', 63)
  9. dup = [x, y, z]
  10. arr = [BitVecVal(0, 63) for i in range(len(cmp))]
  11. num = -1
  12. for i in range(320):
  13.     x = (((x >> 29 ^ x >> 28 ^ x >> 25 ^ x >> 23) & 1) | x << 1)
  14.     y = (((y >> 30 ^ y >> 27) & 1) | y << 1)
  15.     z = (((z >> 31 ^ z >> 30 ^ z >> 29 ^ z >> 28 ^ z >> 26 ^ z >> 24) & 1) | z << 1)
  16.     if i % 8 == 0:
  17.         num = num + 1
  18.     arr[num] = ((arr[num] << 1) | (
  19.         ((z >> 32 & 1 & (x >> 30 & 1)) ^ (((z >> 32 & 1) ^ 1) & (y >> 31 & 1))) & 0xffffffff) & 0xff)
  20. for i in range(len(cmp)):
  21.     sol.add(cmp[i] == arr[i])
  22. assert sol.check() == sat
  23. sol = sol.model()
  24. fake = [sol.eval(i).as_long() & 0xffffffff for i in dup]
  25. Key = [0] * 12
  26. for i in range(3):
  27.     for j in range(4):
  28.         Key[i * 4 + j] = fake[i] >> j * 8 & 255
  29. print(bytearray([(xorkey[i] ^ Key[i % len(Key)]) & 255 for i in range(len(xorkey))]))
复制代码
得到flag
flag{Y0u_@re_G3meM3s7er!}

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

来自云龙湖轮廓分明的月亮

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表