官方wp
https://www.yuque.com/docs/share/e6c5d1fd-8d27-456a-88ab-823226503f56#helloRE
qiandao
放在od中
helloRe
放在ida中,反编译
main函数:输入字符串,长度不能超过25,通过一个if语句即可获得success
查看sub_401080
sub_401080是对输入a1进行了处理
sub_401080的返回值是一个判断,函数sub_401000如果不等于0,则返回True
并且调用sub_401000时,传入经过处理的输入a1
进入sub_401000
if成立的条件是v3和输入相同,strcpy函数将aAy9ZZx9xoc9zI9复制给v3
阅读汇编可知
是经过sub_401080处理后的等于这一串字符串
明白后写出脚本:
if __name__ == "__main__":
`f_flag = 'aY9)Z(?|ZX9xOC9z_i9eOYCw'`
`flag = [0]*25`
`f_ord = [0]*25`
`for i in range(len(f_flag)):`
` f_ord[i] = ord(f_flag[i])`
`for i in range(len(f_flag)):`
`if(f_ord[i]>=40 and f_ord[i] < 48):`
`flag[i] = f_ord[i] + 80`
`else:`
`if(f_ord[i]>=62 and f_ord[i]<=73):`
`flag[i] = f_ord[i] + 3`
`else:`
`if(f_ord[i]>=79 and f_ord[i]<92):`
`flag[i] = f_ord[i] -2`
`else:`
`if(f_ord[i]>=93 and f_ord[i]<=107):`
`flag[i] = f_ord[i] + 4`
`else:`
`if(f_ord[i]>=115 and f_ord[i]<=125):`
`flag[i] = f_ord[i] - 3`
`else:`
`if (f_ord[i] < 38 and f_ord[i]>29):`
`flag[i] = f_ord[i] +1`
`else:`
`flag[i] = f_ord[i]`
`for i in range(len(flag)):`
`flag[i] = chr(flag[i])`
`flag1 = ''`
`for i in range(len(flag)):`
`flag1 += flag[i]`
`print(flag1)`
最后出来是eW91X0ByZV9uMF9wcm9iMWFt
最后进行base64解码
flag: flag{you_@re_n0_prob1am}