BUUCTF-xor writeup
将文件拖入ExEinfoPE

是64位的MACOSX 的可执行文件
拖进IDA中

程序比较简单,基本上所有步骤都在主函数内执行,v6是我们的输入内容

可以观察知道,flag的长度为33
下面这部分对输入进行了一次处理,让输入的数组每一项与前一项异或,然后v6和v3进行比较

所以v3为处理后的内容
点global可以知道v3的内容,也可以在字符串表里看到


所以只要对v3进行逆处理就可以得到flag
把v3转化为ASCII码为[102, 10, 107, 12, 119, 38, 79, 46, 64, 17, 120, 13, 90, 59, 85, 17, 112, 25, 70, 31, 118, 34, 77, 35, 68, 14, 103, 6, 104, 15, 71, 50, 79]
写脚本逆向处理(Tips: 一个数异或同一个数字两次可以得到它本身,比如 23 ^ 2 = 21, 21 ^ 2 = 23)
v6 = [102, 10, 107, 12, 119, 38, 79, 46, 64, 17, 120, 13, 90, 59, 85, 17, 112, 25, 70, 31, 118, 34, 77, 35, 68, 14, 103, 6, 104, 15, 71, 50, 79] i = 32 while i>0: v6[i] = v6[i] ^ v6[i-1] i = i - 1 i = 0 while i<33: print(chr(v6[i]), end="") i = i + 1
运行得到flag

flag{QianQiuWanDai_YiTongJiangHu}

浙公网安备 33010602011771号