用 file 命令查看文件基本信息:
拿到 IDA 中打开:
找寻 global 字符串:
man 函数中对 flag 做了处理:flag[i] ^= flag[i-1]
flag 获取
要想获得本来的 flag 只需要对 global 字符串再同样做一次处理即可;
原因:a ^ b = c, then c ^ b = a
s = [
"f",
0x0A,
"k",
0x0C,
"w",
"&",
"O",
".",
"@",
0x11,
"x",
0x0D,
"Z",
";",
"U",
0x11,
"p",
0x19,
"F",
0x1F,
"v",
'"',
"M",
"#",
"D",
0x0E,
"g",
6,
"h",
0x0F,
"G",
"2",
"O",
]
flag = ["f"]
for i in range(1, len(s)):
if isinstance(s[i], str):
num1 = ord(s[i])
else:
num1 = s[i]
if isinstance(s[i - 1], str):
num2 = ord(s[i - 1])
else:
num2 = s[i - 1]
num1 ^= num2
flag.append(chr(num1))
print("".join(flag))
END ( ̄▽ ̄)~*