[V&N2020]strangeCpp.zip

ida分析。根据字符串搜索找到可能的关键函数。

会答应一系列值。

查看答应的数组 发小里面有 一串字符是没有 使用到的。猜测可能和我们的 flag 有关。

找到这个 数组调用的地方,但是发现有一个异或 但是异或的值在异或之前 进行了 func 函数处理。

返回结果 是 607052314

这里面 返回的值 v7 原本打算动态调试看,但是发现不会执行这一段函数,但是函数的运行只是简单的 移位运算,可以利用 爆破得到应该的值。但是python 对移位的处理太差了。写出来的脚本爆破不出来。所以尝试用c语言。

爆破得到 Num 的值为 123456

然后用python 如果运行这里会打印什么值。

buf = [  38, 44, 33, 39, 59, 13, 4, 117, 104, 52, 
  40, 37, 14, 53, 45, 105, 6
  ]

for i in range(len(buf)):
    buf[i] = (123456 ^ buf[i])%256

print "".join(map(chr,buf))

# 打印:flag{MD5(theNum)F

所以 我们对这个 num 进行md5处理。

flag{e10adc3949ba59abbe56e057f20f883e}