BUUCTF-不一样的flag 1


源文件地址下载

链接:https://pan.baidu.com/s/12p2rkH2jHfux4zVaSrUTXw 
提取码:jk9q 

 

0X1查看有无加壳

没有壳,32位进制的文件

 

0X2用IDA打开,进入main函数页面,F5反编译查看伪代码

F5

 

0X3分析代码

 1 void main()
 2 {
 3   char v0; // [sp+17h] [bp-35h]@1
 4   int v1; // [sp+30h] [bp-1Ch]@1
 5   int v2; // [sp+34h] [bp-18h]@1
 6   signed int v3; // [sp+38h] [bp-14h]@2
 7   signed int i; // [sp+3Ch] [bp-10h]@14
 8   int v5; // [sp+40h] [bp-Ch]@20
 9 
10   __main();
11   v1 = 0;
12   v2 = 0;
13   qmemcpy(&v0, _data_start__, 0x19u);
14   while ( 1 )
15   {
16     puts("you can choose one action to execute");
17     puts("1 up");
18     puts("2 down");
19     puts("3 left");
20     printf("4 right\n:");
21     scanf("%d", &v3);
22     if ( v3 == 2 )
23     {
24       ++v1;
25     }
26     else if ( v3 > 2 )
27     {
28       if ( v3 == 3 )
29       {
30         --v2;
31       }
32       else
33       {
34         if ( v3 != 4 )
35 LABEL_13:
36           exit(1);
37         ++v2;
38       }
39     }
40     else
41     {
42       if ( v3 != 1 )
43         goto LABEL_13;
44       --v1;
45     }
46     for ( i = 0; i <= 1; ++i )
47     {
48       if ( *(&v1 + i) < 0 || *(&v1 + i) > 4 )
49         exit(1);
50     }
51     if ( *((_BYTE *)&v5 + 5 * v1 + v2 - 41) == '1' )
52       exit(1);
53     if ( *((_BYTE *)&v5 + 5 * v1 + v2 - 41) == '#' )
54     {
55       puts("\nok, the order you enter is the flag!");
56       exit(0);
57     }
58   }
59 }

 

注意这几行

    puts("you can choose one action to execute");
    puts("1 up");
    puts("2 down");
    puts("3 left");
    printf("4 right\n:");

1上2下3左4右暗示我们这是个迷宫游戏

 

50     }
51     if ( *((_BYTE *)&v5 + 5 * v1 + v2 - 41) == '1' )
52       exit(1);
53     if ( *((_BYTE *)&v5 + 5 * v1 + v2 - 41) == '#' )
54     {
55       puts("\nok, the order you enter is the flag!");
56       exit(0);
57     }
58   }
59 }

这几行代码告诉我们,如果是1就停止,是#就输出,且迷宫的长度为5

 

0X4打开“ _data_start”函数得到迷宫的值

 

*11110100001010000101111#

 

0X5走迷宫

 

根据上面的分析,不能走1,只能走0.从*#

总共是下下下右右上上右右下下

1上2下3左4右

所以就是22244114422

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM