首页
社区
课程
招聘
[原创][看雪CTF.TSRC 2018 团队赛]第五题 交响曲
发表于: 2018-12-10 13:50 2822

[原创][看雪CTF.TSRC 2018 团队赛]第五题 交响曲

2018-12-10 13:50
2822

序列号1~4位是年,5~6位是月,7~8位是日,9~14位是m[]中的一个字符串。

序列号需要满足d[(year-1900)%60]+c[month-1]+b[day-1]+a[?] = 34

其中年月日需要满足下面的条件:

分析下面的函数,其中的i2代表月份,当月份为2,并且注册码最后六位是m[6],也就是11to13时,函数返回值是63,远大于34,这里可以排除a[6]。
图片描述

我分析了一下,当月份为2时,年份只能是1995,日期只能是1或者3,这样的话序列号是这样的:

根据d[(year-1900)%60]+c[month-1]+b[day-1]+a[?] = 34分别计算上面的两个序列号

a[?]= 13或者10,数组中没有一个等于13,只有a[3]和a[6]=10,上面已经把a[6]排除了,所以必须是a[3],最后六位必须是m[3]。

所以序列号是1995020305to07

通过下面的程序,找到满足上面条件的年月日

把得到的日期使用linux下的工具排序、去掉重复行:

使用下面的程序,找到满足d[(year-1900)%60]+c[month-1]+b[day-1]+a[?] = 34的所有序列号

删除生成文件的后6位(vim很容易实现,也可以修改上面的程序,不打印m[series]),然后排序,去重,然后使用comm命令得到两个文件的相同行

 

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

最后于 2018-12-11 07:56 被Explorerl编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//