BUUCTF [HDCTF2019]Maze 1

下载之后查看是UPX壳的,先脱壳。

拖入IDA,查看伪C代码。

一进来就发现了main,但是在里面会看到堆栈报错的问题,其上一条命令就是常规的动态运算反调试,40102E+1=40102F,在2F处重新生成代码即可,2E处的指令NOP掉。

jnz short near ptr loc_40102E+1跳转到下一行代码,不跳转也是下一行,花指令阻碍ida反汇编

然后选中main头,按P键更新代码,发现main函数出来了。

int __cdecl main(int argc, const char **argv, const char **envp)
{
  signed int i; // [sp+10h] [bp-14h]@1
  char v5[16]; // [sp+14h] [bp-10h]@1

  sub_401140(aGoThroughTheMa);
  scanf(a14s, v5);
  for ( i = 0; i <= 13; ++i )
  {
    switch ( v5[i] )
    {
      case 119:
        ++dword_40807C;
        break;
      case 115:
        --dword_40807C;
        break;
      case 97:
        --dword_408078;
        break;
      case 100:
        ++dword_408078;
        break;
      default:
        continue;
    }
  }
  if ( dword_408078 != 5 || dword_40807C != -4 )
  {
    sub_401140(aTryAgain___);
  }
  else
  {
    sub_401140(aCongratulation);
    sub_401140(aHereIsTheFlagF);
  }
  return 0;
}

dword_40807C是0,dword_408078是7。

找到迷宫字符:

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

猜一下10*7

*******+**

*******#**

****####**

**###*****

**#**F****

**####****

**********

所以ssaaasaassdddw,成功

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值