題目
做法
下載壓縮包,解壓,把解壓后的文件拖進Exeinfo PE進行分析
32位,無殼
扔進IDA(32位),找到main,F5反編譯
沒啥關鍵詞,Shift+F12也找不到什么有用的點
從上往下分析吧
puts("1 up");puts("2 down");puts("3 left");printf("4 right\n:");
選1234都有對應的上下左右選擇,是迷宮題嗎
scanf("%d", &v5);
if ( v5 == 2 ){++*(_DWORD *)&v3[25];}else if ( v5 > 2 ){if ( v5 == 3 ){--v4;}else{if ( v5 != 4 )
LABEL_13:exit(1);++v4;}}else{if ( v5 != 1 )goto LABEL_13;--*(_DWORD *)&v3[25];}
把我們輸入的值放進v5,根據我們輸入的數字不同,v3或v4會有不同變化,亦或是異常退出
if ( *(_DWORD *)&v3[4 * i + 25] >= 5u )exit(1);}if ( v7[5 * *(_DWORD *)&v3[25] - 41 + v4] == 49 )exit(1);if ( v7[5 * *(_DWORD *)&v3[25] - 41 + v4] == 35 ){puts("\nok, the order you enter is the flag!");
我們輸入的值讓v3或v4變化,滿足不同公式,系統會異常退出亦或是返回’好的,你輸入的順序就是標志‘
至此,就再無別的信息了
我們嘗試雙擊運行解壓后的文件
分別輸入1234進行測試
嘗試多次后,發現規律——每次彈出來的四個選項中,只有一個是正確答案,且這個正確答案不是固定的,要自己不斷慢慢試出來
結合IDA的代碼分析,我們要去算那個公式的話,有很多種不同組合方式,而且更繁雜
我們選擇直接打開文件一個個測,測出一個正確的就記下來,直到返回\nok, the order you enter is the flag!
最后成果——222441144222,包上flag{}去提交吧!
更新
于2025.4.18