• BUUCTF-RE-不一样的flag


    养成扔PE的习惯

    用IDA打开

     1 int __cdecl main(int argc, const char **argv, const char **envp)
     2 {
     3   char v3; // [esp+17h] [ebp-35h]
     4   int v4; // [esp+30h] [ebp-1Ch]
     5   int v5; // [esp+34h] [ebp-18h]
     6   signed int v6; // [esp+38h] [ebp-14h]
     7   int i; // [esp+3Ch] [ebp-10h]
     8   int v8; // [esp+40h] [ebp-Ch]
     9 
    10   __main();
    11   v4 = 0;
    12   v5 = 0;
    13   qmemcpy(&v3, _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
    :");
    21     scanf("%d", &v6);
    22     if ( v6 == 2 )
    23     {
    24       ++v4;
    25     }
    26     else if ( v6 > 2 )
    27     {
    28       if ( v6 == 3 )
    29       {
    30         --v5;
    31       }
    32       else
    33       {
    34         if ( v6 != 4 )
    35 LABEL_13:
    36           exit(1);
    37         ++v5;
    38       }
    39     }
    40     else
    41     {
    42       if ( v6 != 1 )
    43         goto LABEL_13;
    44       --v4;
    45     }
    46     for ( i = 0; i <= 1; ++i )
    47     {
    48       if ( *(&v4 + i) < 0 || *(&v4 + i) > 4 )
    49         exit(1);
    50     }
    51     if ( *((_BYTE *)&v8 + 5 * v4 + v5 - 41) == '1' )
    52       exit(1);
    53     if ( *((_BYTE *)&v8 + 5 * v4 + v5 - 41) == '#' )
    54     {
    55       puts("
    ok, the order you enter is the flag!");
    56       exit(0);
    57     }
    58   }
    59 }

    从13行的_data_start__中得到以下信息

    .data:00402000                 public __data_start__
    .data:00402000 __data_start__  db '*11110100001010000101111#',0

    又结合16-20、51-53行可知这是一个迷宫 

    第51、53行中的5*v4可知这是一个5x5的迷宫

    *1111
    01000
    01010
    00010
    1111#

    从*走到#即可

    flag就是通过迷宫的数字

  • 相关阅读:
    Solaris 默认Shell 修改
    关系数组
    文件描述符 文件操作 <> open 文件句柄
    IO 双引号 输出 输入
    第五章答案
    子例程 subroutine
    钻石操作符
    花括号的使用 printf %${width}s , 否则会 去找 $widths
    print reverse <> 是打印全部的文件内容 ?
    hihoCoder#1239 Fibonacci
  • 原文地址:https://www.cnblogs.com/Nickyl07/p/12482635.html
Copyright © 2020-2023  润新知