安恒X计划平台10月月赛逆向题easytree题目思路

ps:做的晚了  最后十分钟才开始 就下载下来这么一道题 难受   

ida载入发现有UPX壳

file一下可以知道是windows下可执行文件

直接加上后缀.exe   ESP定律脱壳

之后载入ida

shift + f12看到有成功提示   双击进入

安恒X计划平台10月月赛逆向题easytree题目思路_第1张图片

双击引用   F5   可以看到关键代码就在main()

int __cdecl main(int argc, const char **argv, const char **envp)
{
  const char *v3; // eax
  int v5; // [esp+14h] [ebp-2Ch]
  char v6; // [esp+1Ah] [ebp-26h]
  char my_str; // [esp+29h] [ebp-17h]
  int v8; // [esp+38h] [ebp-8h]
  int *v9; // [esp+3Ch] [ebp-4h]

  sub_402400();
  v5 = 0;
  v9 = &v5;
  sub_40198E();
  gets(&my_str);
  if ( strlen(&my_str) != 15 )                  // 长度必须等于15
  {
    printf("Nah... ur a fake reverser!");
    exit(0);
  }
  v8 = sub_401500((int)&my_str, 15);            //对我们的输入my_str进行变换
  sub_40166E(v8, v9, (int)&v6);                 //还是一系列操作
  v3 = sub_401794(&v6);                         //这个是base64加密
  if ( !strncmp(v3, "aWNuZXJyc2VhZXRydmVl", 0x14u) )//判断变换后的my_str是否等于这个串 相等则输入正确
  {
    puts("well done bro!");
    printf("ur really know something about tree!");
  }
  else
  {
    printf("Nah.. ur an idiot!");
  }
  return 0;
}

将aWNuZXJyc2VhZXRydmVl  直接base64解密得到

icnerrseaetrvee

 

看到这个之后

脑洞一开   直接输入长度为15的串进行尝试   在最后比较处下断点

发现没啥变化    401500,40166e这两个函数处理最后只是变了顺序

那大致找到对应关系即可  

---> hello , reverser!
---> do you know something about tree?
---> try to input something , I dare you : )

提示与 reverser  tree有关

直接猜到icanreversetree

输入正确

你可能感兴趣的:(我的逆向之路,我的CTF之路,------安恒CTF,我的CTF进阶之路)