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

重点:ida动调找到地图

附件下载

https://wwvc.lanzouj.com/i1vh91bvxtwd

查壳

64位,无壳
image.png

分析

丢入ida64,找到main函数,F5查看伪代码
image.png
可以看到输入path之后,有一个CreateMap函数,看着函数名就知道是在这创建地图,所以我们在这里下一个断点,进行动态调试

ida动态调试

点这个蓝色的圆圈下断点,变红就证明下断点成功
image.png
Local Windows debugger调试器
image.png
点击左边的绿色三角形运行,先随便输入
image.png
回车之后,按Tab,跳到C伪代码页面
image.png
F7单步调试,进入CreateMap函数
image.png
再一直按F7单步调试,直到地图全部出现,自动跳到最开始的main函数页面,点OK
image.png
双击进入CreateMap函数
image.png
再双击map
image.png
找到地图
image.png

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个为一组
image.png
修改之后

[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]

main函数限定了path长度为54
image.png
再看check函数,s就是path,x=15,y=1,分析代码,可以确定,迷宫的初始位置是(15,1),且x,y都是从0开始数的,所以我们可以找到迷宫初始位置
image.png
初始位置,走出迷宫,且path的长度必须是54
image.png
使用word文档,帮忙高光一下0,这样就好看多了
image.png
path:wwdddwwwaaawwwwwwwwwddddssssdddssdsssssssdddwwwwddsssd
main函数提到了,flag是path进行md5之后,加个NSSCTF{}就可以了
image.png
md5加密,取32位小写
image.png

flag:NSSCTF{a8622109e2fb1296e06d5eed6f78f954}

posted @ 2023-10-15 21:12  Zer0o  阅读(179)  评论(0编辑  收藏  举报