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}

 

posted @ 2021-02-13 15:39  KaguyaSaikou  阅读(128)  评论(0)    收藏  举报