最终结果:flag{xor_is_reversible}
通过ida可以看到,需要输入23个字符串,每个输入的字符串需要先和当前的次数进行异或操作,然后和栈中的23个字符比较,如果相同就得到good。所以我们可以用python写一个小程序,把栈中被比较的字符进行异或操作,因为a异或b=c,c异或b=a,所以我们可以得出正确的flag
ida预览视图.png
python代码:
result=[0x66,0x6d,0x63,0x64,0x7f,0x7d,0x69,0x75,0x57,0x60,0x79,0x54,0x7e,0x68,0x78,0x6a,0x62,0x62,0x7b,0x71,0x78,0x70,0x6b]
str=""
for i in range(0,23):
a=chr(result[i]^i)
str=str+a
print(str)
执行结果:
result.png