六十四位ELFpython
IDA找main函数数组
思路很简单,就一个关键函数,参数为输入的字符串,只要让函数的返回值大于等于零就能成功函数
分析该函数code
该函数整理思路是把字符串分为三组进行检验,每组内的相邻元素的下标相差3字符串
写脚本逆向ast
firstchar = [65, 105, 110, 69, 111, 97] thirdchar = [751, 708, 732, 711, 734, 764] masterArray = [471, 12, 580, 606, 147, 108] flag = [0] * 18 tem = [0] * 18 v7 = 666 for i in range(18): tem[i] = v7 # 参与异或的数组 v7 += v7 % 5 # 第一组 index = 0 for i in range(0, 18, 3): flag[i] = firstchar[index] index += 1 # 第三组 index = 0 for i in range(2, 18, 3): flag[i] = thirdchar[index] ^ tem[i] index += 1 # 爆破第二组 index = 0 for i in range(1, 18, 3): for j in range(32, 126): if (flag[i - 1] ^ tem[i - 1]) * (j ^ tem[i]) % (flag[i + 1] ^ tem[i + 1]) == masterArray[index]: flag[i] = j index += 1 break print('tuctf{', end='') for i in range(len(flag)): print(chr(flag[i]), end='') print('}', end='')
flag: tuctf{AfricanOrEuropean?}
class