攻防世界-reverse-maze

8 篇文章 0 订阅

查看文件类型:

File 命令进行查看文件类型

看出ELF类型的64位程序

也可以使用工具直接查看

放到ubuntu里面运行一下查看程序运行的过程

当程序运行的时候,会提示我们输入flag并且根据我们输入的值进行运算后得到真正flag的值。

使用ida进行分析,首先看到puts提示输入字符串放入s1中,然后进入了if判断

S1长度要等于24,前五个字符是nctf{,最后一个字符是}

nctf{xxxxxxxxxxxxxxxxxx}这种格式

接着看判断里面的逻辑处理

逐个对我们输入的字符串进行判断,79(O),111(o),46(.),48(0)

来判断字符串中是否是这四个字符,如果是就进入相对应的函数中进行处理

79(O)判断字符为大写O的时候

*al的位置--,也就是向左移动,并且最后不能移出地图也就是要大于0才可以

111(o)小写o

首先+1然后覆盖变量v1后在进行赋值,也就是向右移动一位,并且不能大于8

也可以从这里进行判最右边是的个数是8,也就是地图的长度是8。

46(.)

向上移动一位,边界是0,不能移出地图

48(0)

向下移动一位,最底下的值是8

到这里可以看出来,这是一张8*8的地图迷宫

O(左) o(右) .(上) 0(下)

现在就是要找到地图的图纸

可以看到最后存在恭喜字样的地方,就是根据地图来进行判断是否走出迷宫,没有就goto回去,成功就返回flag

asc_601060

粘贴出来,8*8

s = "  *******   *  **** * ****  * ***  *#  *** *** ***     *********"
x = ""
for i in s:
   
if i == ' ':
        x +=
'0'
   
elif i == '*':
        x +=
'1'
   
else:
        x += i

随后根据0的位置找到#号

也就是根据O(左) o(右) .(上) 0(下)

考虑到迷宫的起点就是0,0这个位置

o0oo00O000oooo..O刚好18位

nctf{o0oo00O000oooo..O}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值