puzzle

点击此处获得更好的阅读体验


WriteUp来源

来自官方发布

https://www.xctf.org.cn/library/details/5acdc1c31cf4935ac38fce445978888a5710cf11/

题目描述

solve this MIPS puzzle

题目考点

  • 32位MIPS程序的逆向

  • base64编码算法及编码表的使用

  • 数字华容道问题的求解

解题思路

使用IDA加载程序,发现是32位大端MIPS程序,main函数在sub_401560

分析main函数,发现程序将输入做了一个base64解码,但是解码的过程中在访问码表时有18个字节的偏移,需要手动调整

解码后的字符串判断了为数字,然后送入sub_401134函数进行检查

检查中判断了输入数字是否为2、4、6、8,然后在一个3*3的矩阵中进行上下左右移动,最终矩阵要等于[1,2,3,4,5,6,7,8,0],可以看出是一个数字华容道游戏

使用bfsA*算法可以找到一个15步的解884226886224488,而题目刚好要求15步,因此是唯一解。将这个解通过换码表的base64编码后得到8xOi6R2k8xOk6R2i7xOm,输入程序即可得到flag