首页
社区
课程
招聘
[原创]2021 KCTF 春季赛 第八题 众叛亲离 wp
发表于: 2021-5-23 18:16 3874

[原创]2021 KCTF 春季赛 第八题 众叛亲离 wp

2021-5-23 18:16
3874

0x00 初步分析

windows32位应用程序.
看入口像是VC6.0编译的.
定位到main函数, 0x401000.
ida载入, 发现main函数体积庞大, 并且有控制流平坦混淆.

0x01 发生甚么事了

丢ida瞅了两眼, 看到main函数体量如此之大, 就先去吃饭了.
刚把筷子放下, 我靠, 一血就出了...

 

不到1小时出一血, 看来肯定不是正经方法研究混淆流程.
肯定是算法部分设计有漏洞, 而且是大漏洞可以很快推算出序列号.
这时候想到, 是否是使用明码比较..

0x02 寻找捷径

搜索字符串, 找到输入成功的地方.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
0041A99C   |  xor eax,eax   
0041A99E   |  lea ecx,dword ptr ds:[edi+0x2011]      
0041A9A4   |  pop ebp   
0041A9A5   |  xor edx,edx   
0041A9A7   |  mov dh,byte ptr ds:[ecx-0x1]   
0041A9AA   |  mov word ptr ds:[0x42803E],dx   
0041A9B1   |  movzx si,byte ptr ds:[ecx] 
0041A9B5   or dx,si          
0041A9B8   |  mov word ptr ds:[0x42803C],ax      
0041A9BE   cmp dx,ax        
0041A9C1   |  mov word ptr ds:[0x42803E],dx  
0041A9C8   |  jne 蓝色窗帘.41AA04     
0041A9CA   |  inc eax   
0041A9CB   |  add ecx,0x2  
0041A9CE   cmp eax,0x8 
0041A9D1   |  jl 蓝色窗帘.41A9A5 
 
0041A9D3   |  push 蓝色窗帘.425030    | 425030:"\n right \n"
0041A9D8   |  call 蓝色窗帘.41C33F 
...                       
0041AA04   |  push 蓝色窗帘.4253B4    | 4253B4:"\n error\n"
0041AA09   |  call 蓝色窗帘.41C33F   
...

验证通过的要求是, 0x41A99E处[edi+0x2010]地址的数值为:

1
00898030  00 00 00 01 00 02 00 03 00 04 00 05 00 06 00 07  ................

分别尝试修改用户名的一个字符和序列号的一个字符, 发现只影响修改了的那个位的结果, 说明可以一个字符一个字符爆破.

0x03 做表爆破

以"KCTF"为用户名, 输入序列号32个"0"一直到32个"F", 记录下每次到最后的[edi+0x2010]地址处数值.
得到对应关系:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
00000000000000000000000000000000
85A4A5E55B399224E3F9715B80BA999C
 
11111111111111111111111111111111
94B5B4F44A288335F2E8604A91AB888D
 
22222222222222222222222222222222
A78687C7791BB006C1DB5379A298BBBE
 
33333333333333333333333333333333
B69796D6680AA117D0CA4268B389AAAF
 
44444444444444444444444444444444
C1E0E1A11F7DD660A7BD351FC4FEDDD8
 
55555555555555555555555555555555
D0F1F0B00E6CC771B6AC240ED5EFCCC9
 
66666666666666666666666666666666
E3C2C3833D5FF442859F173DE6DCFFFA
 
77777777777777777777777777777777
F2D3D2922C4EE553948E062CF7CDEEEB
 
88888888888888888888888888888888
0D2C2D6DD3B11AAC6B71F9D308321114
 
99999999999999999999999999999999
1C3D3C7CC2A00BBD7A60E8C219230005
 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
2F0E0F4FF193388E4953DBF12A103336
 
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
3E1F1E5EE082299F5842CAE03B012227
 
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
4968692997F55EE82F35BD974C765550
 
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
5879783886E44FF93E24AC865D674441
 
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
6B4A4B0BB5D77CCA0D179FB56E547772
 
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
7A5B5A1AA4C66DDB1C068EA47F456663

写代码查表计算出KCTF的序列号.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
int main(int argc, const char** argv, const char** envp)
{
    const char* a[] = {
          "85A4A5E55B399224E3F9715B80BA999C",
          "94B5B4F44A288335F2E8604A91AB888D",
          "A78687C7791BB006C1DB5379A298BBBE",
          "B69796D6680AA117D0CA4268B389AAAF",
          "C1E0E1A11F7DD660A7BD351FC4FEDDD8",
          "D0F1F0B00E6CC771B6AC240ED5EFCCC9",
          "E3C2C3833D5FF442859F173DE6DCFFFA",
          "F2D3D2922C4EE553948E062CF7CDEEEB",
          "0D2C2D6DD3B11AAC6B71F9D308321114",
          "1C3D3C7CC2A00BBD7A60E8C219230005",
          "2F0E0F4FF193388E4953DBF12A103336",
          "3E1F1E5EE082299F5842CAE03B012227",
          "4968692997F55EE82F35BD974C765550",
          "5879783886E44FF93E24AC865D674441",
          "6B4A4B0BB5D77CCA0D179FB56E547772",
          "7A5B5A1AA4C66DDB1C068EA47F456663",
    };
 
    const char* aa = "00000001000200030004000500060007";
 
    for (int i = 0; i < 32; i++)
    {
 
        for (int j = 0; j < 16; j++)
        {
            if (a[j][i] == aa[i])
            {
                printf("%X", j);
                break;
            }
        }
 
    }
 
    return 0;
}

85A4A5E45B3B9227E3FD715E80BC999B


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

最后于 2021-5-23 18:31 被KuCha128编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//