首页
社区
课程
招聘
[原创]KCTF2022 春季赛 签到提 险象环生 writeup
发表于: 2022-5-16 23:05 3269

[原创]KCTF2022 春季赛 签到提 险象环生 writeup

2022-5-16 23:05
3269

图片描述
观察函数调用,发现是SMC

段落引用 防守方在发布CrackMe时,应向大众公开一组用户名和序列号,即 “ Name/Serial ” ,其中公开的这个用户名“Name“,必须是该CrackMe文件的 hash值。hash算法指定为SHA256,用户名为hash结果的前64bit的16进制大写文字。
公开用户名及序列号.txt 包含了公开的一组用户名及其对应的序列号
公开的用户及序列号:
用户名 : 461D7AD538F179EE
序列号 : 40403286341212

 

题目给了一组公开的序列号和用户名 在经过smc_decrypto过后F5观察程序逻辑

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
  strcpy(v14, "www.pediy.com");
  Destination = 0;
  v16 = 0;
  v17 = 0;
  v18 = 0;
  v19 = 0;
  v20 = 0;
  v21 = 0;
  strcpy(v11, "23456781ABCDEFGHJKLMNPQRSTUVWXYZ");
  DlgItemTextA = GetDlgItemTextA(hDlg, 1001, String, 201);
  v6 = GetDlgItemTextA(hDlg, 1000, v10, 201);
  if ( DlgItemTextA > 14 || v6 == 0 )
  {
    SetDlgItemTextA(hDlg, 1001, "Wrong Serial!");
    hWnd = GetDlgItem(hDlg, 1014);
    EnableWindow(hWnd, 0);
    return 0;
  }
  else
  {
    v12[0] = *(_DWORD *)&String[10];
    v3 = sub_4034AD(3, (int)v12);
    if ( dword_413000 )
      sub_4017E0(&loc_4015D2, &loc_401767 - &loc_4015D2, v3);
    ms_exc.registration.TryLevel = 0;
    Value = sub_401260(v10, v6);
    strncpy(&Destination, String, DlgItemTextA - 4);
    _ultoa(Value, Buffer, 10);
    dword_413000 = 0;
    v4 = strcmp(Buffer, &Destination);
    if ( v4 )
      v4 = v4 < 0 ? -1 : 1;
    if ( v4 )
      SetDlgItemTextA(hDlg, 1001, "Wrong Serial!");
    else
      SetDlgItemTextA(hDlg, 1001, "Success!");
    hWnda = GetDlgItem(hDlg, 1014);
    EnableWindow(hWnda, 0);
    ms_exc.registration.TryLevel = -2;
    return 0;
  }
}

serial的后四位固定1212为xor key为smc提供解密
图片描述
可以看到存在CRC32
sub_401260就是对name 进行了crc32校验
图片描述
结尾补上1212
最终用户名KCTF
serial number:15920863481212
图片描述
最终获得正确flag


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

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