首页
社区
课程
招聘
[2020][KCTF] 第十二题 白云苍狗 wp
发表于: 2020-5-14 10:27 7023

[2020][KCTF] 第十二题 白云苍狗 wp

ccfer 活跃值
16
2020-5-14 10:27
7023

输入转成72位的全局变量A919DF处,经过sub_4013E0运算,输出也从这里返回
比较结果的地方在这里:

sub_4013E0里面非常长,清一色的与非门操作,一共是340181个与非门
这么大规模的与非门化简,是准备要玩点技术了,经过两天奋战,发现实力它不允许啊,得到的还是10几万行操作

二 换成没有技术的战术
输入输出在A919DF,与非门操作的数据从A918B8开始

多试几个不同的情况,发现A918B8处刚好是输入的平方,sub_4013E0已经跑过了大概四分之一,这四分之一的操作只是个平方x*x,那整个操作估计也就4步运算
然后发现输出总是0,感觉有什么问题,可能输入被改小了,被检查到了
反正已经知道一步操作是平方了,用公开的一组正常key,等到第二次写断点的时候差不多函数要结束了
所以取消A919DF的硬件写断点,在前面得到的5F8BFB处下个int3断点,断下来后在A919DF设置成硬件读取断点
把A918B8的144位乘法结果全清0,改成小点的数方便观察
运行在这里断下来:

看进度又推进了大约四分之一,并发现A918B8处的结果一直没有变化,直到前一步把A918B8处的144位乘法结果改成后72位不是0的时候结果才会发生剧烈变化
这是什么算法?乘法后还要可逆,首先想到的是取模,并且符合小于模的数输出不变,超过模以后会剧烈变化
再重来一下推算这个模n,A918B8处前72位全填0,第73位填1,后面全0
得到:

后面就懒得详述了,肯定是第三步某运算,再第四步取一次模
最终得到运算关系:

sub_4013E0运行3次,最终就是27次方
n=0xEA3E7CCB3943CA161B
y=0x87D54

sage里计算结果:('%X' % (Zmod(0xEA3E7CCB3943CA161B)(0x87D54).nth_root(27))).upper()[::-1]
得到:4A3A9740B735704562

 

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2020-5-15 13:03 被ccfer编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//