0x01.查看信息
0x02.IDA分析
用F12查看关键字符串,没有什么提示,直接分析主函数的逻辑
可以看到32行的sub_4011C0函数,这个函数返回的值如果是“1”,也就是true,我们输入的flag就是正确的flag,我们看sub_4011C0函数的伪代码。
这里i是从4开始即flag的第四位开始,对flag的操作分为了两部分:
- 第26行代码~第32行代码,将flag中的大写字母转小写,小写字母转大写。
- 第33行代码对每位字符进行异或操作。
第一步不必多说,第二步byte_4420B0数组从文件中提取出来
sub_4013C0(v8[i])函数为
0x03.获取脚本
num = [0x0D,0x13,0x17,0x11,0x02,0x01,0x20,0x1D,0x0C,0x02,0x19,0x2F,0x17,0x2B,
0x24,0x1F,0x1E,0x16,0x09,0x0F,0x15,0x27,0x13,0x26,0x0A,0x2F,0x1E,0x1A,
0x2D,0x0C,0x22,0x04]
v4 = "GONDPHyGjPEKruv{{pj]X@rF"
v8 = ""
flag = ""
for i in range(len(v4)):
v8 += chr(((ord(v4[i])^num[i])-72)^0x55)
for i in range(len(v4)):
if ord(v8[i]) >= 97 and ord(v8[i]) <= 122:
flag += chr(ord(v8[i])-32)
elif ord(v8[i])>=65 and ord(v8[i])<=90:
flag += chr(ord(v8[i])+32)
else:
flag +=v8[i]
print('EIS{'+flag+'}')