Zer0o 发表于 2023-10-15 21:36

[HUBUCTF 2022 新生赛]help(ida动调+迷宫

重点:ida动调找到地图
# 附件下载
https://wwvc.lanzouj.com/i1vh91bvxtwd
# 查壳
64位,无壳

# 分析
丢入ida64,找到main函数,F5查看伪代码

可以看到输入path之后,有一个CreateMap函数,看着函数名就知道是在这创建地图,所以我们在这里下一个断点,进行动态调试
# ida动态调试
点这个蓝色的圆圈下断点,变红就证明下断点成功

选Local Windows debugger调试器

点击左边的绿色三角形运行,先随便输入

回车之后,按Tab,跳到C伪代码页面

F7单步调试,进入CreateMap函数

再一直按F7单步调试,直到地图全部出现,自动跳到最开始的main函数页面,点OK

双击进入CreateMap函数

再双击map

找到地图

> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1
> 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0
> 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1
> 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1
> 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0
> 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1
> 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1
> 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1


# 再次分析
分析CreateMap函数,很明显,地图需要以16个为一组

修改之后
> ,
> ,
> ,
> ,
> ,
> ,
> ,
> ,
> ,
> ,
> ,
> ,
> ,
> ,
> ,
>
main函数限定了path长度为54

再看check函数,s就是path,x=15,y=1,分析代码,可以确定,迷宫的初始位置是(15,1),且x,y都是从0开始数的,所以我们可以找到迷宫初始位置

初始位置,走出迷宫,且path的长度必须是54

使用word文档,帮忙高光一下0,这样就好看多了

path:`wwdddwwwaaawwwwwwwwwddddssssdddssdsssssssdddwwwwddsssd`
main函数提到了,flag是path进行md5之后,加个NSSCTF{}就可以了

md5加密,取32位小写


flag:`NSSCTF{a8622109e2fb1296e06d5eed6f78f954}`

hemingway111 发表于 2023-10-16 15:42

有用,感谢分享
页: [1]
查看完整版本: [HUBUCTF 2022 新生赛]help(ida动调+迷宫