1. 程式人生 > >安恆X計劃平臺10月月賽逆向題easytree題目思路

安恆X計劃平臺10月月賽逆向題easytree題目思路

ps:做的晚了  最後十分鐘才開始 就下載下來這麼一道題 難受   

ida載入發現有UPX殼

file一下可以知道是windows下可執行檔案

直接加上字尾.exe   ESP定律脫殼

之後載入ida

shift + f12看到有成功提示   雙擊進入

雙擊引用   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

輸入正確