首页
社区
课程
招聘
看雪CTF2019Q1-第6题
2019-3-18 23:12 2472

看雪CTF2019Q1-第6题

2019-3-18 23:12
2472
这题好像有两部分, 做的时候只看了第一部分, 可以提交就没继续看了
1.  第一部分
sn格式: yyyymmddX1Y0uN3tG00dH***

2 * (yyyy + mm) == 4040
3 * mm / 2 + 100 * dd == 115
yyyy - 110 * dd == 1900
得到: 20101001X1Y0uN3tG00dH***

后4位为跳转地址: 00401BF0
得到: 20101001X1Y0uN3tG00dHaCk

int __cdecl sub_4012F0(char *a1)
{
  strcpy(v4, "X1Y0uN3tG00d");
  while ( v4[v2] == a1[v1] )
  {
    ++v2;
    ++v1;
    if ( v2 > 11 )
    {
      result = 1;
      if ( a1[20] == 'H' )
        return result;
      return 0;
    }
  }
  return 0;
}

int sub_401460(char *Str)
{
  char Dest; // [esp+8h] [ebp-10h]
  if ( strlen(Str) == 24 )
  {
    if ( sub_4013B0(Str) )
    {
      Str[20] -= 0x58;
      Str[21] -= 0x46;
      Str[22] -= 3;
      Str[23] -= 0x6B;
      strcpy(&Dest, Str);
    }
  }
}

int sub_4013B0(char *sn)
{
  sub_401380(sn);
  yyyy = g_sn_bin[3] + 1000 * g_sn_bin[0] + 100 * g_sn_bin[1] + 10 * g_sn_bin[2];
  mm = g_sn_bin[5] + 10 * g_sn_bin[4];
  dd = g_sn_bin[7] + 10 * g_sn_bin[6];
  if ( 2 * (yyyy + mm) != 4040 || 3 * mm / 2 + 100 * dd != 115 )
    goto LABEL_2;
  result = 1;
  if ( yyyy - 110 * dd != 1900 )
  {
LABEL_2:
    result = 0;
  }
  return result;
}

int sub_401380(char *a1)
{
  i = 0;
  do
  {
    result = a1[i] - 0x30;
    g_sn_bin[i++] = result;
  }
  while ( i <= 7 );
  return result;
}


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

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