• BUUCTF--[HDCTF2019]Maze


    测试文件:https://lanzous.com/ibh0xhi

    脱壳

    获取信息

    • 32位文件
    • upx壳

    代码分析

    看名字就知道,应该就是用几个符号代表方向,让我们走迷宫。打开字符串窗口看了看

    星号那段就是迷宫了,总共70个字符。

    找到main函数,发现0x40102E有莫名的指令,直接使用OD nop掉,转存到新文件。

    得到了新文件,打开main函数

    int __cdecl main(int argc, const char **argv, const char **envp)
    {
      signed int i; // [esp+10h] [ebp-14h]
      char v5[16]; // [esp+14h] [ebp-10h]
    
      sub_401140(aGoThroughTheMa);
      scanf(a14s, v5);
      for ( i = 0; i <= 13; ++i )
      {
        switch ( v5[i] )
        {
          case 'a':
            --dword_408078;
            break;
          case 'd':
            ++dword_408078;
            break;
          case 's':
            --dword_40807C;
            break;
          case 'w':
            ++dword_40807C;
            break;
          default:
            continue;
        }
      }
      if ( dword_408078 != 5 || dword_40807C != -4 )
      {
        sub_401140(aTryAgain);
      }
      else
      {
        sub_401140(aCongratulation);
        sub_401140(aHereIsTheFlagF);
      }
      return 0;
    }
    .data:00408078 dword_408078    dd 7                    ; DATA XREF: _main:loc_401096↑r
    .data:00408078                                         ; _main+9E↑w ...
    .data:0040807C dword_40807C    dd 0                    ; DATA XREF: _main:loc_401074↑r
    .data:0040807C                                         ; _main+7D↑w ...

    让我们用14步,让dword_408078==5,dword_40807c==-4

    不过直接凑出是不行的,结合前面的迷宫,猜测迷宫为7*10。

    从+走到F就行,w:上;s:下;a:左;d:右,ssaaasaassdddw

    get flag!

    flag{ssaaasaassdddw}

    谢谢@jentle 和 @bejyf2008 给的提醒:

    这题是多解的,密码ssaaaa打头就行。

  • 相关阅读:
    哈希表存人名。。= =
    转载:风雨20年:我所积累的20条编程经验
    Beginning C# Objects:From Concepts to Code
    数据结构题集
    内部排序算法比较。。= =
    稀疏矩阵运算器
    断念
    .NET Reflector
    Andorid信息推送
    Project2010环境搭建
  • 原文地址:https://www.cnblogs.com/Mayfly-nymph/p/12711595.html
Copyright © 2020-2023  润新知