BUUCTF—Reverse—GXYCTF2019-luck_guy(9)
下载附件,照例扔入Exeinfo PE查看信息
可执行文件,IDA 64位直接干
进main函数,F5反编译,看主要处理函数,跳转进去
查看,点进patch_me(v4)看看是怎么回事
这里已经相当清楚,逻辑就是如果你输入的是奇数会返回just finished,如果是偶数则会返回get_flag()
在这里看到。flag是由f1和f2拼出来的,f1在汇编中有,双击查看
f2没有现成的字符串,看代码是s = 0x7F666F6067756369LL是初始字符串,在case5中得到f2
根据长度8,应该是每个字节转数字变换后转ASCII码。写代码执行
flag="GXY{do_not_"
f2=[0x7F,0x66,0x6F,0x60,0x67,0x75,0x63,0x69][::-1] #小端序的问题,所以要逆序一下
for j in range(8):
if j%2==1:
s=chr(f2[j]-2)
else:
s=chr(f2[j]-1)
flag+=s
print (flag)
代码执行
flag{do_not_hate_me}