将文件拖进IDA,进入main函数F5反编译。题目非常简单,读入一串字符长度限制是56,然后经过一系列的函数处理后等于某个已知的字符串。
其中memcpy()函数,可以查到。
__strcpy_chk()函数,将v4拷贝到input。
话不多说直接在IDA中使用脚本逆向。
b=[]
for i in range(0,56):
b.append(Byte(0x100000ED0+i*4))
for i in range(0,56):
b[i]^=0xDE
for i in range(0,16):
b[i+40]^=0xEF
for i in range(0,10):
b[i+30]^=0xAB
for i in range(0,10):
b[i+20]^=0xEF
for i in range(0,10):
b[i+10]^=0xBE
for i in range(0,10):
b[i]^=0xAD
print("flag is")
flag=""
for i in b:
flag+=chr(i%128)
print(flag)
结果: