首页
社区
课程
招聘
看雪CTF.TSRC 2018 团队赛-第11题
发表于: 2018-12-22 19:10 4925

看雪CTF.TSRC 2018 团队赛-第11题

2018-12-22 19:10
4925

1. 总体逻辑

4. 前缀表达式

(1)已知原函数(前缀表达式)的前面与后面部分, 中间部分取自sn
(2)已知该表达式的导函数
求解sn

正常解法: 求导函数的积分得到原函数? 
不会求, 不过还好猜出来了

2. Base62解码

str_b62 = g_str_primitive_part1 + sn + g_str_primitive_part2_1 + g_str_primitive_part2_2;
str_b62.size() == 0x4407
str_primitive = Base62_decode(str_b62);
str_primitive.size() == 0x31AB

base62是变形的base64, 表的前面61位跟原来一样, 后3位分别用9A, 9B, 9C来替代, 9D为padding

.text:00401230 x_init_g_str_primitive_part1
.text:00401280 x_init_g_str_primitive_part2_1
.text:004012D0 x_init_g_str_primitive_part2_2
..
.text:0040342F                 mov     [ebp+b62.vtbl], offset ??_7Base62@@6B@ ; const Base62::`vftable'
...
.text:0040344E                 push    3Dh             ; a3
.text:00403450                 push    offset aAbcdefghijklmn ; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"...
.text:00403455                 lea     ecx, [ebp+b62.table] ; this
.text:0040345B                 mov     byte ptr [ebp+var_4], 2
.text:0040345F                 call    x_std_string_ctor
.text:00403464                 mov     [ebp+b62.pad], '9'
...
.text:0040349C                 lea     eax, [ebp+str_sn]
.text:0040349F                 mov     edx, offset g_str_primitive_part1 ; a2
.text:004034A4                 push    eax             ; a3
.text:004034A5                 lea     ecx, [ebp+a1]   ; a1
.text:004034A8                 call    x_std_string_ctor_0
.text:004034AD                 add     esp, 4
.text:004034B0                 push    offset g_str_primitive_part2_1 ; a1
.text:004034B5                 mov     edx, eax        ; edx0
.text:004034B7                 mov     byte ptr [ebp+var_4], 5
.text:004034BB                 lea     ecx, [ebp+a2]   ; a2
.text:004034C1                 call    x_std_string_concat
.text:004034C6                 add     esp, 4
.text:004034C9                 push    offset g_str_primitive_part2_2 ; a1
.text:004034CE                 mov     edx, eax        ; edx0
.text:004034D0                 mov     byte ptr [ebp+var_4], 6
.text:004034D4                 lea     ecx, [ebp+str]  ; a2
.text:004034DA                 call    x_std_string_concat
.text:004034DF                 add     esp, 4
.text:004034E2                 lea     ecx, [ebp+str_sn] ; this
.text:004034E5                 push    eax             ; a2
.text:004034E6                 call    x_std_string_ctor_1
..
.text:00403623                 cmp     [ebp+str_sn._Mysize], 4407h
..
.text:00403669                 call    x_Base62_decode
..
.text:00403697                 cmp     [ebp+str_sn._Mysize], 31ABh

.text:00401230 x_init_g_str_primitive_part1
.text:00401280 x_init_g_str_primitive_part2_1
.text:004012D0 x_init_g_str_primitive_part2_2
..
.text:0040342F                 mov     [ebp+b62.vtbl], offset ??_7Base62@@6B@ ; const Base62::`vftable'
...
.text:0040344E                 push    3Dh             ; a3
.text:00403450                 push    offset aAbcdefghijklmn ; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"...
.text:00403455                 lea     ecx, [ebp+b62.table] ; this
.text:0040345B                 mov     byte ptr [ebp+var_4], 2
.text:0040345F                 call    x_std_string_ctor
.text:00403464                 mov     [ebp+b62.pad], '9'
...
.text:0040349C                 lea     eax, [ebp+str_sn]
.text:0040349F                 mov     edx, offset g_str_primitive_part1 ; a2
.text:004034A4                 push    eax             ; a3
.text:004034A5                 lea     ecx, [ebp+a1]   ; a1
.text:004034A8                 call    x_std_string_ctor_0
.text:004034AD                 add     esp, 4
.text:004034B0                 push    offset g_str_primitive_part2_1 ; a1
.text:004034B5                 mov     edx, eax        ; edx0
.text:004034B7                 mov     byte ptr [ebp+var_4], 5
.text:004034BB                 lea     ecx, [ebp+a2]   ; a2
.text:004034C1                 call    x_std_string_concat
.text:004034C6                 add     esp, 4
.text:004034C9                 push    offset g_str_primitive_part2_2 ; a1
.text:004034CE                 mov     edx, eax        ; edx0
.text:004034D0                 mov     byte ptr [ebp+var_4], 6
.text:004034D4                 lea     ecx, [ebp+str]  ; a2
.text:004034DA                 call    x_std_string_concat
.text:004034DF                 add     esp, 4
.text:004034E2                 lea     ecx, [ebp+str_sn] ; this
.text:004034E5                 push    eax             ; a2
.text:004034E6                 call    x_std_string_ctor_1
..
.text:00403623                 cmp     [ebp+str_sn._Mysize], 4407h
..
.text:00403669                 call    x_Base62_decode
..
.text:00403697                 cmp     [ebp+str_sn._Mysize], 31ABh

3.  求导函数后比较

.text:00401320 x_init_g_str_derivative
..
.text:004036DE                 call    x_parse_expression
..
.text:004037D9                 cmp     g_str_derivative._Myres, 10h
.text:004037E0                 lea     ecx, [ebp+str_sn]
.text:004037E3                 push    g_str_derivative._Mysize ; a4
.text:004037E9                 mov     edx, [ebp+str_sn._Mysize] ; a1
.text:004037EC                 mov     eax, offset g_str_derivative
.text:004037F1                 cmovnb  eax, dword ptr g_str_derivative.anonymous_0
.text:004037F8                 cmp     [ebp+str_sn._Myres], 10h
.text:004037FC                 push    eax             ; a3
.text:004037FD                 cmovnb  ecx, dword ptr [ebp+str_sn.anonymous_0] ; a2
.text:00403801                 call    x_std_compare

.text:00401320 x_init_g_str_derivative
..
.text:004036DE                 call    x_parse_expression
..
.text:004037D9                 cmp     g_str_derivative._Myres, 10h
.text:004037E0                 lea     ecx, [ebp+str_sn]
.text:004037E3                 push    g_str_derivative._Mysize ; a4
.text:004037E9                 mov     edx, [ebp+str_sn._Mysize] ; a1
.text:004037EC                 mov     eax, offset g_str_derivative
.text:004037F1                 cmovnb  eax, dword ptr g_str_derivative.anonymous_0
.text:004037F8                 cmp     [ebp+str_sn._Myres], 10h
.text:004037FC                 push    eax             ; a3
.text:004037FD                 cmovnb  ecx, dword ptr [ebp+str_sn.anonymous_0] ; a2
.text:00403801                 call    x_std_compare

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 4
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//