前言
好多题解writeup直接说这个题目是个迷宫题,说的好像一眼就能看出来似的。但是实际上不提前看答案或者研究透彻这个题目的话,根本想不出来这是个迷宫。
下面说一下我的思路吧。
题目
不一样的flag
是不是做习惯了常规的逆向题目?试试这道题,看你在能不能在程序中找到真正的flag!注意:flag并非是flag{XXX}形式,就是一个’字符串‘,考验眼力的时候到了! 注意:得到的 flag 请包上 flag{} 提交
思路
首先是反编译:
int __cdecl __noreturn main(int argc, const char **argv, const char **envp)
{
_BYTE v_5x5_4[29]; // [esp+17h] [ebp-35h] BYREF
int v4; // [esp+34h] [ebp-18h]
int input; // [esp+38h] [ebp-14h] BYREF
int i; // [esp+3Ch] [ebp-10h]
_BYTE v7[12]; // [esp+40h] [ebp-Ch] BYREF
__main();
v_5x5_4[26] = 0;
*(_WORD *)&v_5x5_4[27] = 0;
v4 = 0;
strcpy(v_5x5_4, "*11110100001010000101111#");
while ( 1 )
{
puts("you can choose one action to execute");
puts("1 up");
puts("2 down");
puts("3 left");