[GXYCTF2019]luck_guy
https://buuoj.cn/challenges#[GXYCTF2019]luck_guy
只有一个可执行文件,IDA 64位直接干
进main函数,F5反编译,看主要处理函数,跳转进去
在这里看到。flag是由f1和f2拼出来的,f1在汇编中有,双击查看
.data:0000000000601078 f1 db 'GXY{do_not_',0 ; DATA XREF: get_flag+9E↑o
f2没有现成的字符串,看代码是s = 0x7F666F6067756369LL是初始字符串,在case5中得到f2
根据长度8,应该是每个字节转数字变换后转ASCII码。写代码执行
flag="GXY{do_not_"
f2=[0x7F,0x66,0x6F,0x60,0x67,0x75,0x63,0x69]
for j in range(8):if j%2==1:s=chr(f2[j]-2)else:s=chr(f2[j]-1)flag+=s
print (flag)
输出 GXY{do_not_~dn^fsbg
这个结果不太对,上网看,发现有大小端问题
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)
输出 GXY{do_not_hate_me}
提交flag{do_not_hate_me}