測試文件:https://lanzous.com/ibh0xhi
脫殼
獲取信息
- 32位文件
- upx殼
代碼分析
看名字就知道,應該就是用幾個符號代表方向,讓我們走迷宮。打開字符串窗口看了看
星號那段就是迷宮了,總共70個字符。
找到main函數,發現0x40102E有莫名的指令,直接使用OD nop掉,轉存到新文件。
得到了新文件,打開main函數
int __cdecl main(int argc, const char **argv, const char **envp) { signed int i; // [esp+10h] [ebp-14h] char v5[16]; // [esp+14h] [ebp-10h] sub_401140(aGoThroughTheMa); scanf(a14s, v5); for ( i = 0; i <= 13; ++i ) { switch ( v5[i] ) { case 'a': --dword_408078; break; case 'd': ++dword_408078; break; case 's': --dword_40807C; break; case 'w': ++dword_40807C; break; default: continue; } } if ( dword_408078 != 5 || dword_40807C != -4 ) { sub_401140(aTryAgain); } else { sub_401140(aCongratulation); sub_401140(aHereIsTheFlagF); } return 0; }
.data:00408078 dword_408078 dd 7 ; DATA XREF: _main:loc_401096↑r .data:00408078 ; _main+9E↑w ... .data:0040807C dword_40807C dd 0 ; DATA XREF: _main:loc_401074↑r .data:0040807C ; _main+7D↑w ...
讓我們用14步,讓dword_408078==5,dword_40807c==-4
不過直接湊出是不行的,結合前面的迷宮,猜測迷宮為7*10。
從+走到F就行,w:上;s:下;a:左;d:右,ssaaasaassdddw
get flag!
flag{ssaaasaassdddw}
這題是多解的,密碼ssaaaa打頭就行。