首页
社区
课程
招聘
CTF2017第一题
2017-6-1 17:15 2103

CTF2017第一题

2017-6-1 17:15
2103

MessageBoxA下断点,向上翻,找到关键函数地址:0x4011F4,修改两处e8为90,ida载入,定位到0x4011F4,F5,C代码如下:

int sub_4011F4()
{
  double v0; // st7@8
  double v1; // st6@8
  const CHAR *v3; // [sp-Ch] [bp-28h]@9
  const CHAR *v4; // [sp-8h] [bp-24h]@8
  CHAR key[4]; // [sp+0h] [bp-1Ch]@1
  int v6; // [sp+18h] [bp-4h]@8

  GetDlgItemTextA(hDlg, 1001, key, 21);
  Sleep(0x1F4u);
  if ( strlen(key) != 4
    || key[0] == '0'
    || key[1] == '0'
    || key[2] == '0'
    || key[3] == '0'
    || key[0] != '1'
    || key[1] != '5' )
  {
    v4 = Caption;
    goto LABEL_11;
  }
  v6 = key[2] - '0';
  v0 = (double)v6;
  v6 = key[0] - '0';
  v1 = (double)v6;
  v6 = key[3] - '0';
  *(float *)&v6 = (v0 - v1 / (double)5) * (double)v6 * 16.0;
  v4 = aCrackme2017Ctf;
  if ( *(float *)&v6 != 384.0 )
  {
LABEL_11:
    v3 = Text;
    return MessageBoxA(hWnd, v3, v4, 0);
  }
  v3 = aRegistrationSu;
  return MessageBoxA(hWnd, v3, v4, 0);
}

经分析key为4位,假设key第一位为a,第二位为b,第三位为c,第四位为d,能够得到如下关系:

a = 1,b = 5,384 = (c - a/5)*d*16 --》 24 = (c - 1/5)*d,肉眼就能计算出来 
c = 5,d = 5,即key = 1555


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

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