不一样的flag 1(迷宫题)

题目

在这里插入图片描述

做法

下载压缩包,解压,把解压后的文件拖进Exeinfo PE进行分析
在这里插入图片描述
32位,无壳
扔进IDA(32位),找到main,F5反编译
在这里插入图片描述
没啥关键词,Shift+F12也找不到什么有用的点
从上往下分析吧

    puts("1 up");
    puts("2 down");
    puts("3 left");
    printf("4 right\n:");

选1234都有对应的上下左右选择,是迷宫题吗

scanf("%d", &v5);
if ( v5 == 2 )
    {
      ++*(_DWORD *)&v3[25];
    }
    else if ( v5 > 2 )
    {
      if ( v5 == 3 )
      {
        --v4;
      }
      else
      {
        if ( v5 != 4 )
LABEL_13:
          exit(1);
        ++v4;
      }
    }
    else
    {
      if ( v5 != 1 )
        goto LABEL_13;
      --*(_DWORD *)&v3[25];
    }

把我们输入的值放进v5,根据我们输入的数字不同,v3或v4会有不同变化,亦或是异常退出

      if ( *(_DWORD *)&v3[4 * i + 25] >= 5u )
        exit(1);
    }
    if ( v7[5 * *(_DWORD *)&v3[25] - 41 + v4] == 49 )
      exit(1);
    if ( v7[5 * *(_DWORD *)&v3[25] - 41 + v4] == 35 )
    {
      puts("\nok, the order you enter is the flag!");

我们输入的值让v3或v4变化,满足不同公式,系统会异常退出亦或是返回’好的,你输入的顺序就是标志‘
至此,就再无别的信息了
我们尝试双击运行解压后的文件
在这里插入图片描述
分别输入1234进行测试
在这里插入图片描述
尝试多次后,发现规律——每次弹出来的四个选项中,只有一个是正确答案,且这个正确答案不是固定的,要自己不断慢慢试出来
结合IDA的代码分析,我们要去算那个公式的话,有很多种不同组合方式,而且更繁杂
我们选择直接打开文件一个个测,测出一个正确的就记下来,直到返回\nok, the order you enter is the flag!
最后成果——222441144222,包上flag{}去提交吧!
在这里插入图片描述

更新

于2025.4.18

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值