2018红帽杯icm WP

前言

这题基本上就考察一个idea算法。简单分析一下程序,可以知道flag长度为42。显示使用idea进行加密,然后hex->逆序->异或

过程

这题的难点还是在idea算法的解密上。刚开始也不知道是什么加密方式。
无独有偶,看到了这个奇怪的字符串。然后百度了一下,发现是idea算法。

但是有关这个算法的相关的资料很少,只找到了c的源程序,自己编译了一下,刚开始尝试发现找不到密匙,不对,于是IDA打开,进行比对。最终确定为idea

因为idea是在des基础上的扩展。属于对称加密。

了解到程序中自带了解密函数后就舒服多了。patch一下远程需。逆推到idea加密后的那一步。然后使用icm-decrypt进行手工解密。我个人不喜欢完整的脚本。附上部分代码
for i in range(48):
for j in range(256):
if (119-i)^j==byte_203040[i]:
flag.append(j)
# flag.append(hex(j).replace(“0x”,”“))
break

for i in range(47,-1,-1): #8-1
temp.append(hex((i%8+1)^flag[j]).replace(“0x”,”“))
j=j+1
print temp
temp=[‘af’, ‘91’, ‘d8’, ‘ed’, ‘ba’, ‘9’, ‘28’, ‘25’, ‘5a’, ‘8d’, ‘81’, ‘5a’, ‘3e’, ‘2d’, ‘6’, ‘55’, ‘21’, ‘af’, ‘bc’, ‘d4’, ‘26’, ‘61’, ‘7f’, ‘8d’, ‘b4’, ‘42’, ‘98’, ‘d5’, ‘ce’, ‘7c’, ‘24’, ‘42’, ‘3f’, ‘af’, ‘66’, ‘cd’, ‘bd’, ‘55’, ‘1f’, ‘d6’, ‘ca’, ‘de’, ‘d8’, ‘15’, ‘f7’, ‘d3’, ‘3b’, ‘3c’]
每8位逆序一下,然后待会到解密函数中。即可解出flag,最后两位好像是需要猜测。
flag{f53fc1db-b7d3-4643-9b48-725f13129d07}

总结

中间过程好多图丢了2333333.

猜你喜欢

转载自blog.csdn.net/qq_33438733/article/details/80166445