测试文件: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打头就行。
来源:oschina
链接:https://my.oschina.net/u/4312789/blog/4258464