KCTF2019_q4_第三题_街机少年
2019-12-08 14:36:06 Author: bbs.pediy.com(查看原文) 阅读量:132 收藏

[原创]KCTF2019_q4_第三题_街机少年

1天前 43

队友给力,很快就用ida把源码逆出来整理好了,我也就直接看源码测试分析瞎折腾了

看了大半天也没琢磨出具体是个什么算法模型,只看出来有两种基本操:

正确的A操作,读取解码后的注册码,一番拆解/查表/计算得到x,y,对T2的数据做减法:T2[x - 1] -= y

正确的B操作,读取解码后的注册码,一番拆解/查表/计算得到x,y,对T2的数据做减法:T2[k] -= (k * k + 1) % T2[k] + 1,其中的k是初始值为5,依次加4取模15

A和B轮换进行,在最后一步A操作完成后T2全0则达到目标,如果B操作后T2全0会失败

感觉直接硬碰硬不是太好对付,转而改变思路,采用万能的穷举大法试一试

对check函数中的几个跳转点稍作修改返回当前状态,为穷举逻辑提供接口

发现穷举可行,每次给两个字节然后调用check函数探测结果,如果状态满意就滚动到遍历下一个索引位置

为了探测多解情况,每个位置穷举出两个解,发现大部队都相同,只有一处出现差异情况

具体运行结果如下:

i=00000001.key=883D

i=00000001.key=883D

i=00000002.key=C888

i=00000002.key=C888

i=00000003.key=43C8

i=00000003.key=43C8

i=00000004.key=A843

i=00000004.key=A843

i=00000005.key=F9A8

i=00000005.key=F9A8

i=00000006.key=42F9

i=00000006.key=42F9

i=00000007.key=F642

i=00000007.key=F642

i=00000008.key=2AF6

i=00000008.key=2AF6

i=00000009.key=202A

i=00000009.key=212A

i=0000000A.key=D420

i=0000000A.key=D421

i=0000000B.key=FDD4

i=0000000B.key=FDD4

i=0000000C.key=F3FD

i=0000000C.key=F3FD

i=0000000D.key=F6F3

i=0000000D.key=F6F3

i=0000000E.key=F6F6

i=0000000E.key=F6F6

i=0000000F.key=F4F6

i=0000000F.key=F4F6

i=00000010.key=F6F4

i=00000010.key=F6F4

i=00000011.key=F9F6

i=00000011.key=F9F6

i=00000012.key=F4F9

i=00000012.key=F4F9

i=00000013.key=FFF4

i=00000013.key=FFF4

i=00000014.key=EDFF

i=00000014.key=EDFF

xken_len = 22

cr result0 : 3D88C843A8F942F62A20D4FDF3F6F6F4F6F9F4FFEDF9

cr result1 : 3D88C843A8F942F62A21D4FDF3F6F6F4F6F9F4FFEDF9

Key0: IRrBJtrsJi@dBGnwvyppwIpswIygxJzz

Key1: IRrBJtrsJi@dBWnwvyppwIpswIygxJzz

经验证第二组正确

更详细情况见附件代码

[公告]安全测试和项目外包请将项目需求发到看雪企服平台:https://qifu.kanxue.com

最后于 1天前 被ccfer编辑 ,原因:


文章来源: https://bbs.pediy.com/thread-256261.htm
如有侵权请联系:admin#unsafe.sh