-
-
[原创]KCTFQ3 1.乱世鬼雄 writeup
-
2019-10-15 18:20 2069
-
首先通过简单的调试了解程序的主要逻辑
关键函数返回了一个值,而剩下的函数都与这个返回值有关,所以我们只需要获取正确情况下这个返回值为多少。
输入txt里给的正确用户名和序列号,调试
此时,返回值为
{0xC6,0xE4,0xCA,0xB5,0xCE,0xD2,0xB8,0xFC,0xCF,0xB2,0xBB,0xB6,0xCB,0xEF,0xBC,0xE1}
发现:这个关键函数就是将username字符串每一位的16进制 与 password字符串的每两位视为一个16进制 进行异或
验证:
所以只需要将这个返回值与题目已给的KCTF进行异或,就可以得到序列号了
s=[0xC6,0xE4,0xCA,0xB5,0xCE,0xD2,0xB8,0xFC,0xCF,0xB2,0xBB,0xB6,0xCB,0xEF,0xBC,0xE1] user = "KCTF" f='' for i in range(16): if(i>=4): f += str(hex(0 ^ s[i])) else: f += str(hex(ord(user[i])^s[i])) print(f.replace('0x','').upper()) #8DA79EF3CED2B8FCCFB2BBB6CBEFBCE1
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法
赞赏
看原图