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}