下载后先查壳
无壳,64位用ida打开
找到main函数分析看看
如果输入的幸运数字为偶数,则进入get_flag函数
shift+12找到f1
继续分析代码
所以顺序应该是4,5,1
case4将f2和s进行拼接,但去查找f2为空
小端序存储:
即最低地址存放的最低字节
ELF文件通常使用小端序存储
IDA会把内存中的数据自动转化为大端序存储
所以此处s要反过来
所以f2 为icug`of\x7F
根据case5写个脚本逆向推理
case5对f2进行了一个减法操作
flag = 'do_not_'
f2 = "icug`of\x7F"
vi = []
for i in range(8):
if i%2 == 1:
vi.append(ord(f2[i])+i-2)
else:
vi.append(ord(f2[i])+i - 1)
flag += chr(vi[i]-i)
print(flag)
得到flag{do_not_hate_me}