查一下壳,64位elf文件
ctrl+e找到main()函数
只进行了一个比较函数,看一下check()
猜测是a1中存放的flag,往下继续查看函数
把a1中存的数据都给出来了
写个脚本,输出一下a1,直接就是我们要的flag
python
a1 = 33*[0]
a1[1] = 99
a1[25] = 64
a1[27] = 101
a1[4] = 50
a1[17] = 114
a1[29] = 102
a1[17] = 114
a1[24] = 95
a1[2] = 116
a1[9] = 99
a1[32] = 125
a1[19] = 118
a1[5] = 48
a1[14] = 110
a1[15] = 100
a1[8] = 123
a1[18] = 51
a1[28] = 95
a1[21] = 114
a1[0] = 119
a1[6] = 50
a1[22] = 115
a1[31] = 110
a1[12] = 95
a1[7] = 48
a1[16] = 95
a1[11] = 112
a1[23] = 101
a1[30] = 117
a1[10] = 112
a1[13] = 64
a1[3] = 102
a1[26] = 114
a1[20] = 101
flag = ''
for i in range(0,len(a1)):
flag += chr(a1[i])
print(flag)
#wctf2020{cpp_@nd_r3verse_@re_fun}
本题考察了一个对数据的提取,可以手动提取,也可以用ida python提取(数据多的话建议使用)IDAPython入门教程 基于IDA7.5_Python3 第一讲 简介与地址获取 - iBinary - 博客园 (cnblogs.com)