首页
论坛
课程
招聘
[原创]2021KCTF秋季赛 ch1 身在何处
2021-11-30 09:58 11723

[原创]2021KCTF秋季赛 ch1 身在何处

2021-11-30 09:58
11723

主体逻辑如下:

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
int __cdecl sub_951340(HWND hDlg)
{
  int name_length; // ebx
  int v2; // ebx
  int num_serial; // eax
  signed int serial_length; // [esp+Ch] [ebp-260h]
  char v6[200]; // [esp+10h] [ebp-25Ch] BYREF
  CHAR name[200]; // [esp+D8h] [ebp-194h] BYREF
  CHAR serial[200]; // [esp+1A0h] [ebp-CCh] BYREF
 
  memset(name, 0, sizeof(name));
  memset(v6, 0, sizeof(v6));
  memset(serial, 0, sizeof(serial));
  name_length = GetDlgItemTextA(hDlg, 1000, name, 201);
  if ( name_length
    && (serial_length = GetDlgItemTextA(hDlg, 1001, serial, 201),
        v2 = encode(name, name_length),
        strspn(serial, "0123456789") == strlen(serial))
    && serial_length <= 10
    && (num_serial = sub_95307F((int)serial)) != 0
    && (unknown_libname_13(v2 ^ num_serial, (int)v6, 16), encode(v6, 8) == 0x13B88C77) )
  {
    SetDlgItemTextA(hDlg, 1001, "Success!");
    return 1;
  }
  else
  {
    SetDlgItemTextA(hDlg, 1001, "Wrong Serial!");
    return 0;
  }
}

由于提供了一组可用的账号密码:

1
2
用户名 : 01F845C5B7C52E56
序列号 : 653259165

因此通过调试,先得到encode(v6, 8) == 0x13B88C77)中的v6为0x52a1ed5a,即v2 ^ num_serial。
由于已知用户名为KCTF,因此动调v2 = encode(name, name_length)得到v2为0x5EE54F4C。
从而得到num_serial为0x5EE54F4C^0x52a1ed5a=205824534。


【公告】 讲师招募 | 全新“预付费”模式,不想来试试吗?

收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回