[WP]XCTF-no-strings-attached
1、查看文件信息,32位
2、载入IDA中,发现有个decrypt函数需要注意。进入main等函数查看源码。
3、跟踪 authenticate() 函数中 if 语句 print() 函数发现了success 的字样。因此我们能知道当 authenticate() 函数中 ws 和 s2 相等时,会输出正确结果。
而 s2 是由 decrypt 函数加密后所得。
4、跟踪 s 和 dword 两个参数可以在rodata段查看到其值。
需要注意的是,这里 s 的实际上是 0x143A, 0x1436, 0x143B...
同理的,dword 是 0x1401, 0x1402...
5、得到两个参数的值后,便可以根据 decrypt 函数编写 exp,运行得到 flag。
1 a2 = [1, 2, 3, 4, 5] 2 v7 = len(a2) 3 s = [0x3a, 0x36, 0x37, 0x3b, 0x80, 0x7a, 0x71, 0x78, 0x63, 0x66, 0x73, 0x67, 0x62, 0x65, 0x73, 0x60, 0x6b, 0x71, 0x78, 0x6a, 0x73, 0x70, 0x64, 0x78, 0x6e, 0x70, 0x70, 0x64, 0x70, 0x64, 0x6e, 0x7b, 0x76, 0x78, 0x6a, 0x73, 0x7b, 0x80] 4 v6 = len(s) 5 v2 = v6 6 dest = s 7 i = 0 8 while i < v6: 9 dest[i] -= a2[i%5] 10 i += 1 11 12 flag = '' 13 for x in dest: 14 flag += chr(x) 15 16 print(flag)