(63)[CISCN 2022 东北]easycpp

(63)[CISCN 2022 东北]easycpp

这个题,我们先IDA打开,进行一波正常的流程操作

然后我们看这个伪代码

image-20250315162121449

可能你们刚打开,会被这些代码所震惊。其实不然。

我们一步步分析就知道只有其中的三个步骤在发挥作业

它定义的很多数据都是重复在使用

image-20250315162221018

主要是这三句话,当我去提取Buf2的数据时,我们发现我们根本提取不出来。是空的。当我们执行这个程序它肯定是有数据的,我们可以对它按X去查看数据来源,也可以直接动调获得数据

enc=[0x0A, 0x0B, 0x7D, 0x2F, 0x7F, 0x67, 0x65, 0x30, 0x63, 0x60,
  0x37, 0x3F, 0x3C, 0x3F, 0x33, 0x3A, 0x3C, 0x3B, 0x35, 0x3C,
  0x3E, 0x6C, 0x64, 0x31, 0x64, 0x6C, 0x3B, 0x68, 0x61, 0x62,
  0x65, 0x36, 0x33, 0x60, 0x62, 0x36, 0x1C, 0x7D]

然后我们直接写解密脚本

enc=[0x0A, 0x0B, 0x7D, 0x2F, 0x7F, 0x67, 0x65, 0x30, 0x63, 0x60,
  0x37, 0x3F, 0x3C, 0x3F, 0x33, 0x3A, 0x3C, 0x3B, 0x35, 0x3C,
  0x3E, 0x6C, 0x64, 0x31, 0x64, 0x6C, 0x3B, 0x68, 0x61, 0x62,
  0x65, 0x36, 0x33, 0x60, 0x62, 0x36, 0x1C, 0x7D]
​
for i in range(len(enc)-4,-1,-1):
  enc[i + 2] = enc[i + 2] ^ enc[i + 3]
  enc[i + 1] = enc[i + 1] ^ enc[i + 2]
  enc[i ] = enc[i ] ^ enc[i + 1]
​
print(''.join(map(chr, enc)))

flag{37c1b0258164803691d1d193b00ec56a}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值