首页
社区
课程
招聘
[原创]追凶者也 writeup
2018-12-13 07:17 3117

[原创]追凶者也 writeup

2018-12-13 07:17
3117

追凶者也 writeup


 

用ida打开cm.exe之后发现WinMain调用了一个空函数2F1280,去start函数里看了看也没发现什么,但在使用ctrl+e跳转到入口点时发现存在TlsCallback函数:

 

 

首先是modi_mainfunc函数

 

 

其中304014指向函数2F1220,304018处指向的是函数2F1280;

 

结合断点分析发现这个函数改写了函数2F1280,使其跳转到函数2F1220;

 

 

之后还有一个modi_getext函数

 

 

在断点跟踪过程中能够发现该函数通过对比hash的方式找到GetDlgItemTextA函数地址,之后将该函数改写,让其去调用函数2F1A10

 

TlsCallback函数最后开启了一个线程:

 

 

将dword_3047FC作为开关,只要其为1就再次修改GetDlgItemTextA函数。

 

在TlsCallback函数结束后进入WinMain函数,之后:

 

2F1280->2F1220->DialogFunc->2F1040

 

 

2F1040会去调用修改后的GetDlgItemTextA,即会调用2F1A10函数。

 

2F1A10函数是验证输入的主要函数,结合断点跟踪分析函数流程如下:

 

 

 

 

do_move函数将byte-3047D0的数据作为3x3的九宫格,
首先根据第二个参数的值找到byte-3047D0中该值对应的行列位置:

 

 

之后根据wasd的方向,将该值向该方向移动一格(该格处的值必须是0才能移动)

 

 

再根据do_check函数中的初值和move函数中最后的检查,就是要通过移动将
413
725
860
变为
123
456
780
就可以了。根据初态容易判断先将第一行的1左移再将2上移就能整理好第一行,4 7 8 6可以先依次移开,于是

 

经过d6d8s7s4a1w2后变为

 

123
405
786

 

再之后 a5w6即可整理好第二行,同时第三行也完成了。

 

则最后的flag为d6d8s7s4a1w2a5w6

 


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞4
打赏
分享
最新回复 (2)
雪    币: 182
活跃值: (576)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
柒雪天尚 2018-12-13 15:23
2
0
有意思
雪    币: 31
活跃值: (87)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
次元有名 1 2018-12-14 23:45
3
0
有想法
游客
登录 | 注册 方可回帖
返回