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