首页
社区
课程
招聘
看雪CTF2019Q2-第10题 开启时间之轮
发表于: 2019-6-19 01:54 4179

看雪CTF2019Q2-第10题 开启时间之轮

2019-6-19 01:54
4179

设置name(4个name中随机选1个),

按换行符分隔转换成16进制
name_part1记为Y, name_part2记为G
.text:004040D0 x_set_rnd_name

.text:00403F0C                 push    offset aDS      ; "%d\n%s"
.text:00403F11                 push    ecx             ; char *
.text:00403F12                 call    _sscanf

Y: 67
G: 1DB49DFF25CFF1A955529516A2B1D92728988B150F53514B6ABB26A8EC6F4FE3

Y: 66
G: 54D8FFDD81B50AC27A20DBD697C9A530841471595B691B7F4336FF5313867ABC

Y: 65
G: 6F7570369DA6669C5F2E620CCB6F2379BF5E790929BC7989B5AE5E088D510782

Y: 64
G: 14681B5AB4AA11E0CE7AF892923160F7C975EE6688141717927C2A0904B38767

sn以XXXX分隔, 前半部分记为v1(256进制), 后半部分记为v2(10进制)
.text:004040D0 x_set_rnd_name

.text:00403F0C                 push    offset aDS      ; "%d\n%s"
.text:00403F11                 push    ecx             ; char *
.text:00403F12                 call    _sscanf

Y: 67
G: 1DB49DFF25CFF1A955529516A2B1D92728988B150F53514B6ABB26A8EC6F4FE3

Y: 66
G: 54D8FFDD81B50AC27A20DBD697C9A530841471595B691B7F4336FF5313867ABC

Y: 65
G: 6F7570369DA6669C5F2E620CCB6F2379BF5E790929BC7989B5AE5E088D510782

Y: 64
G: 14681B5AB4AA11E0CE7AF892923160F7C975EE6688141717927C2A0904B38767

sn以XXXX分隔, 前半部分记为v1(256进制), 后半部分记为v2(10进制)
.text:004040D0 x_set_rnd_name

.text:00403F0C                 push    offset aDS      ; "%d\n%s"
.text:00403F11                 push    ecx             ; char *
.text:00403F12                 call    _sscanf

Y: 67
G: 1DB49DFF25CFF1A955529516A2B1D92728988B150F53514B6ABB26A8EC6F4FE3

Y: 66
G: 54D8FFDD81B50AC27A20DBD697C9A530841471595B691B7F4336FF5313867ABC

Y: 65
G: 6F7570369DA6669C5F2E620CCB6F2379BF5E790929BC7989B5AE5E088D510782

Y: 64
G: 14681B5AB4AA11E0CE7AF892923160F7C975EE6688141717927C2A0904B38767

sn以XXXX分隔, 前半部分记为v1(256进制), 后半部分记为v2(10进制)
.text:00403FA1                 call    x_extract_XXXX

.text:00403FA1                 call    x_extract_XXXX

验证sn, 返回结果必须为0
.text:00404004                 call    x_404270

.text:00404004                 call    x_404270

素数p=2^255-19=7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
phi(p)=p-1=7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
.text:00403E94                 mov     [esp+8CCh+prime_arg], 2
.text:00403E9C                 mov     [esp+8CCh+prime_arg+4], 0FFh
.text:00403EA4                 mov     [esp+8CCh+prime_arg+8], 0FFFFFFEDh

.text:0040445E                 call    big__set_int
.text:0040446F                 call    big__pow_int
.text:00404480                 call    big__add_int
.text:00404492                 call    big__sub_int
.text:004044A2                 call    big__set_int

.text:00403E94                 mov     [esp+8CCh+prime_arg], 2
.text:00403E9C                 mov     [esp+8CCh+prime_arg+4], 0FFh
.text:00403EA4                 mov     [esp+8CCh+prime_arg+8], 0FFFFFFEDh

.text:0040445E                 call    big__set_int
.text:0040446F                 call    big__pow_int
.text:00404480                 call    big__add_int
.text:00404492                 call    big__sub_int
.text:004044A2                 call    big__set_int

4*v2 < p
.text:00404587                 call    big__add
.text:004045A1                 call    big__add
.text:004045B1                 call    big__compare

.text:00404587                 call    big__add
.text:004045A1                 call    big__add
.text:004045B1                 call    big__compare

x=v2-v1
验证 64x^4+x^2+3 mod p == v1 
.text:00404607                 call    big__sub
.text:0040462A                 call    big__powmod_int
.text:0040464A                 call    big__ax_plus_b_mod_p

.text:00404683                 call    big__sub
.text:0040468F                 call    big__get_int

.text:00404607                 call    big__sub
.text:0040462A                 call    big__powmod_int
.text:0040464A                 call    big__ax_plus_b_mod_p

.text:00404683                 call    big__sub
.text:0040468F                 call    big__get_int

v1的最后1个字符+10, 判断是否为25进制(ABCDEFGHKJILMNOPQRSTUVWYZ)

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

收藏
免费 2
支持
分享
最新回复 (2)
雪    币: 5568
活跃值: (3208)
能力值: ( LV12,RANK:407 )
在线值:
发帖
回帖
粉丝
2
最后的求解GCD方法没看出来,但是基本每次得到的结果都是1。
对求逆元、求幂余运算没看出来,代码太长,估计以后就不用看了,根据输入输出值,拿工具验算一下就行了。
前面的代码基本上跟了一遍。
2019-6-24 20:53
0
雪    币: 5568
活跃值: (3208)
能力值: ( LV12,RANK:407 )
在线值:
发帖
回帖
粉丝
3
有一点:我跟踪了前缀码(10以内),与0x19的运算:
类似
a*19^9+b*19^8+……,原来这就是25进制。我把它理解成了多项式之和的结果,有点low。后面跟踪的结果需为较大的素数。
2019-6-24 20:56
0
游客
登录 | 注册 方可回帖
返回
//