Re学习之攻防世界-easy_Maze

这篇博客介绍了如何解决攻防世界-easy_Maze挑战的过程,涉及步骤包括查看文件类型、使用IDA分析、动态调试等技术。作者通过动调在Step_0和Step_1中理解了迷宫生成逻辑,并在Step_2中找到关键数据,最终提取地图数据以获取flag。博客强调了动态调试在分析输入前自动生成数据的重要性。
摘要由CSDN通过智能技术生成


攻防世界-easy_Maze

步骤

查看文件类型,拖进Ubuntu,终端file命令
在这里插入图片描述ida打开,找到main函数,F5查看伪代码,发现一共三个步骤
在这里插入图片描述
进入到Step_0()
在这里插入图片描述
a3为主函数中的v7,a2=7,a1是主函数中的v9。继续分析代码,看的出来一共执行了49次,这说明了v9这个数组并不是如ida翻译的那样是个长度为7的数组,它后面的那些数据也应该是v9中的数据。
在这里插入图片描述
这样我们就可以写一个类似的代码来跑一下,看看经过Step_0之后v7的值变成了什么,显然这一步还是挺好理解的。
来到Step_1()
在这里插入图片描述
很是复杂的一个函数,里面还有。。。
然后就倒在了这里(本来想不看大佬们的wp自己搞的),大佬们的wp里大都是用的动调,因为Step_0,Step_1都是在输入函数之前,且这两个函数的作用就是用来生成迷宫,然后在Step_2中输入并判断该处是否为1,所以完全可以使用动调,然后在栈里面查看数据。
附上:ida动调的博客
下好断点
在这里插入图片描述

F9自动进入debug,并执行到断点处
在这里插入图片描述
在右下角Stack view里面右键跳转到RSP(栈顶,上一步执行完后数据存储的地方,即地图数据),在右键跟随16进制数据,如此左下方的Hex view就会跳转到RSP
在这里插入图片描述
这里就是地图了,把数据提取出来(手写也不多。滑稽脸)然后wasd就可以把flag整出来了。

总结

如果在输入之前有什么数据会自动生成的话,就可以对其进行动态调试,通过对内存的查看来找出其自动生成的那部分数据,以求对后续步骤产生作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值