[Crypto] permgame - CirQ xp0int Posted on Aug 25 2018 全场0血的crypto,然而我相信大家都是卡在其中一步,就是爆破K2上。 没有拿到flag,这个解法假设K2已知。 ![enter image description here](https://leanote.com/api/file/getImage?fileId=5b7a9f8bab64412a5900220d) 题目要求输入三个字符串,m1 m2 m3。看源码可知,m3就是K2,5字节,唯一有关的信息是最后输出的h1_2,是m1根据一个固定算法得到的。最后的输出是一个md5,因此可以爆破K2 ![enter image description here](https://leanote.com/api/file/getImage?fileId=5b7aa036ab64412a59002224) 然而事实是,在整个比赛周期都没有爆破出来,从alphanumeric到printable,都没有。。。意思就是K2里面还有不可见字符。。。那全场没人做出来也就可以理解了 假设K2已知,那么temp3就是0。 为了让temp2为0,需要type2_1(m1)和type2_2(m2)的结果相同: ![enter image description here](https://leanote.com/api/file/getImage?fileId=5b7aa4a9ab64412a590022a4) process就是第一个字符替换为它与最后一个字符异或后的结果,那么很简单,只要m1和m2最后10字节相同且最后一个字节都是`\x00`就可以绕过这一层。 temp1要求type1(m1)和type1(m2)相同,但m1和m2是不同的。这里需要md5碰撞的字符串,网上搜一下就有了。由于K1长度未知,需要填充一个固定长度的K1的后缀(或者说msg的前缀),使得K1加上后缀的长度刚好等于md5的分组长度即64字节,需要64次爆破。 ![enter image description here](https://leanote.com/api/file/getImage?fileId=5b7aa567ab64412a590022b6) 打赏还是打残,这是个问题 赏 Wechat Pay Alipay [Rev]beijing-MF [Rev]advanced-sherlly
没有帐号? 立即注册