-
-
[原创]KCTFQ3 1.乱世鬼雄 writeup
-
发表于: 2019-10-15 18:20 2660
-
首先通过简单的调试了解程序的主要逻辑
关键函数返回了一个值,而剩下的函数都与这个返回值有关,所以我们只需要获取正确情况下这个返回值为多少。
输入txt里给的正确用户名和序列号,调试
此时,返回值为
{0xC6,0xE4,0xCA,0xB5,0xCE,0xD2,0xB8,0xFC,0xCF,0xB2,0xBB,0xB6,0xCB,0xEF,0xBC,0xE1}
发现:这个关键函数就是将username字符串每一位的16进制 与 password字符串的每两位视为一个16进制 进行异或
验证:
所以只需要将这个返回值与题目已给的KCTF进行异或,就可以得到序列号了
1 2 3 4 5 6 7 8 9 10 11 | 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 |
赞赏
看原图
赞赏
雪币:
留言: