re题(30)BUUCTF-[HDCTF2019]Maze

BUUCTF在线评测 (buuoj.cn)

 

查一下壳,32位upx壳

245d29cd0b084565ae35d85c9d28e624.png

 

 

脱完壳放到ida,shift+F12看一下字符串,是个迷宫,maze(迷宫)6ab241201cc1449193a5c66b323e296c.png

 

 

 

这里有一个经典的花指令 (导致找不到main函数)

下方有个奇怪的jnz指令,它跳转到了下一行,相当于没跳

我们可以发现 call的这个地址根本不存在,这里两种方法

第一种用ollydbg nop掉

 47bcce87603c4210a423e6beee24ff0e.png

 

 

 

 

找到这条call指令对应的地址,是0040:102E这个位置 

a3c9f446acc9451080c99fe72f96d620.png

 

 

由于 0040102C执行了jump 所以也要跟着一起patch掉 ctrl+E

这个call指令,不能全部nop,因为后面那个东西可能是有效代码
修改为 90(nop)

e44effb946f54aa3bd447015f111120e.png

 

 

 

选择复制到可执行文件(所有修改) 然后保存文件
然后再IDA打开
花指令就被去除了

b914f4e485024c38942c71463774a288.png

 

 

 

 

第二种是ida nop掉8f158e838c00463f94aff3bd0ca7861a.png

 

 

 

这个call指令,不能全部nop,因为后面那个东西可能是有效代码(我先全部nop掉了没法f5)。

(注:nop40102E是不要全部nop,防止关键信息也被nop掉,先用d键转化为字节数据,在一个一个试,先nop第一个,在nop前两个。。。。)

按d将其先转换为字节数据。a8a99a32578d46bd81c9589aeb3ec1ce.png

 

 

 

在花指令的链接中,那篇博主总结了花指令的常见情况,知道了db 0E8h是添加花指令,继续nop掉

nop掉之后IDA自动的将后面的数据转换为代码数据

a45ef5df961b4ed2aace6589124746fb.png

 

 

此时数据地址是红色的,仍然没法f5反汇编,将关键代码全部选中,按p键将其声明为函数
然后就可以F5伪代码了 

801f5fd68e974341bda0a4b480a28947.png

 

 

  1. flag的长度为14,分析代码可知:开始dword_408078=7,40807c=0,坐标是(7,0),然后要让dword_408078=5,40807c=-4,意思是结束的位置是(5,-4),然后w表示上,s表示下,a表示左,d表示右
  2. 这是一道迷宫题,先打印一下字符

 

 

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

flag{ssaaasaassdddw}

 

本题考察了花指令和迷宫,需要先把花指令去掉,然后自己根据逻辑构造一个迷宫,用wasd分别代表上左下右走出迷宫,即flag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值