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打頭就行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM