天天看点

BUUCTF Reverse Java逆向解密

BUUCTF Reverse Java逆向解密

一天一道CTF题目,能多不能少

下载文件,发现是个class文件,这好办直接使用jd-gui打开,反编译:

BUUCTF Reverse Java逆向解密

逻辑是如此清晰简单,就是我们输入一个字符串

然后经过一个for循环进行异或

然后将得到的新字符串与KEY进行比较,看看是否相等~

这里我想看看在JAVA中的异或与python中的异或是否一样,我就进行了java代码的编译:

BUUCTF Reverse Java逆向解密

再贴上python的代码:

strs = [180, 136, 137, 147, 191, 137, 147, 191,
 148, 136, 133, 191, 134, 140, 129, 135, 191, 65]

flag = ""
for i in range(0,len(strs)):
	flag += chr(strs[i] - ord('@') ^ 0x20)
print(flag)
           

也能得到:

BUUCTF Reverse Java逆向解密

事实证明我想的太多了~

结果就得到了flag:

flag{This_is_the_flag_!}