[HDCTF2019]Maze

分析文件

32位,有壳upx

脱壳

使用吾爱破解工具箱里面的upx脱壳机,拖入进去会自动脱壳

ida32打开

明显的花指令特征

尝试修改call指令,改成nop,右击call指令->patching->change byte

可以看到E8 58 C7 45 EC 00 00 00 00 EB 09 8B 4D EC 83 C1

将其开头的E8改成90

选中红色地址区域,按p键即可看到main函数,然后按f5查看伪代码

分析main函数

scanf("%14s", v5); //输入数据到v5
for ( i = 0; i <= 13; ++i )
  {
    switch ( v5[i] )
    {
      case 'a':
        --*asc_408078;
        break;
      case 'd':
        ++*asc_408078;
        break;
      case 's':
        --dword_40807C;
        break;
      case 'w':
        ++dword_40807C;
        break;
      default:
        continue;
    }
  }
//遍历v5中的每一个值,并且分别与a,d,s,w进行比较,同时对asc_408078和dword_40807C变量进行加减操作
 if ( *asc_408078 == 5 && dword_40807C == -4 )
  {
    sub_401140(aCongratulation);   //表示输入正确
    sub_401140(aHereIsTheFlagF);
  }
  else
  {
    sub_401140(aTryAgain);
  }

//最终asc_408078变量要等于5,dword_40807C要等于-4

通过上面分析,a,d,s,w几个关键字母可以猜出是走迷宫的题目,并且查看汇编代码可以看到asc_408078,和dword_40807C的值 (7和0),大概就是初始坐标

猜测迷宫图是由*******+********* ****** **** ******* **F****** **************这些字符组成

这些字符长度是70,初始坐标是(7,0),迷宫图只有两种可能排列,一种是7*10,另一种是10*7

7*10的是这样

*******
+******
*** ***
***    
****   
*******
 **F***
***    
*******
*******

很明显不对,因为根本走不通

10*7的是这样

*******+**
******* **
****    **
**   *****
** **F****
**    ****
**********

嗯,这样看样子才对,分析了一下,应该是从+开始走,走到F,然后移动的方向分别表示w,a,s,d这几个字母

flag{ssaaasaassdddw}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值