首页
社区
课程
招聘
[HUBUCTF 2022 新生赛]help(ida动调+迷宫
2023-10-15 21:42 8744

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

2023-10-15 21:42
8744

重点: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个为一组

修改之后

[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

再看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}


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞4
打赏
分享
最新回复 (1)
雪    币: 19410
活跃值: (29069)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
秋狝 2023-10-16 09:05
2
1
感谢分享
游客
登录 | 注册 方可回帖
返回