看题目就知道查找不到关键字符串,为防止踩坑,strings命令查看,没有找到有用的字符串。IDA载入程序查找入口函数,
main函数中有4个函数,经过分析判断authenticate()为关键函数,跟进其中,
很明显,decrypt是关键处,接下来我们使用gdb调试,当然直接分析decrypt也很容易得出flag,但在此我们学习gdb-peda的使用,我也是第一次使用。。。。
找到这个函数的地址0x08048658,然后下断点运行,运行的的命令是r。下断点:b *0x08048658。然后使用n运行,n是单步步过,s是单步步进。来到此处:
我们发现ebx的值是9,正好是flag的开头,然后再看eax,0x39存在0x804cfd0。然后我们直接断点到这个函数后,跳过此函数,再查看0x804cfd0地址处:
写python脚本,拿到flag。
strings = [57, 52, 52, 55, 123, 121, 111, 117, 95, 97, 114, 101, 95, 97,
110, 95, 105, 110, 116, 101, 114, 110, 97, 116, 105, 111, 110,
97, 108, 95, 109, 121, 115, 116, 101, 114, 121, 125]
tmp = ''
for i in range(len(strings)):
s = chr(strings[i])
tmp += s
print(tmp)