安恆X計劃平臺10月月賽逆向題easytree題目思路
阿新 • • 發佈:2018-10-31
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
輸入正確