首页
社区
课程
招聘
[原创] 看雪 ctf 攻防战 2018 - 追凶者也
发表于: 2018-12-12 21:36 3034

[原创] 看雪 ctf 攻防战 2018 - 追凶者也

aqs 活跃值
5
2018-12-12 21:36
3034

一个 32位的 exe
自己电脑跑不起来,上班摸鱼又不敢花时间搞个win7,只能静态看了..

ida 打开首先可以看到 WinMain 函数,进去看看

WinMain 调了一个 函数,sub_401280 ,这个函数 call 了一个 CheckEsp 函数, 看 WinMain 的 xref 貌似 还加了反调试,应该是检查内存镜像完整性什么什么的
还好这个程序比较小,函数不多,乱点一下就可以找到关键逻辑
先看 DialogFunc 调用了下面这个函数

主要是

分配内存
然后调用了一个函数

这函数就是跳到了 loc_40D180 这个地址,这里是再 rdata 段
ida p 一下就可以 f5 看了,开头像下面

写了一堆字符,最后可以看到 MessageBox , success 等, 这里应该是 loadlibary 然后调里面的 MessageBox 什么的吧,好像没有什么逻辑处理的东西???
乱点函数看到了一个可疑的逻辑

看到 wdsa 基本上就可以确定关键逻辑在这里了,这是要玩游戏??
注意到 rdata 是不可执行的,可能这里有什么SEH的处理逻辑在里面,木有时间,就先不管了,反正逻辑找到了
看看上面两个函数的 xref 什么的,wdsa 比较的应该就是 输入的每个byte
,输入的格式是
wXdXSXaXaX 类似这样,X是数字 0-9
每次获取两个byte 然后进入 sub_401380
最后要求byte_4147D0 这个表里面的内容是 1,2,...,8,0 这样,这个有9个项, 会不会是 3x3 的迷宫什么什么的
进 sub_401380 看看

一开头的逻辑,可以确定这是进行 一个 3x3 的表的操作了,这里是根据 我们输入的 wX 的 X 定位一个项, 后面 根据 wdsa switch 处理
wdsa 一般想到的是 方向键,还原一下 这个表初始化的时候

这不会是拼图游戏吧,类似这样?

看一下后面 switch 的处理逻辑也基本可以确定了,那么就是要把初始化的表变成

玩了一下,结果是
d6d8s7s4a1w2a5

int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
  sub_401280();
  return 0;
}
.text:00401280 sub_401280      proc near               ; CODE XREF: WinMain(x,x,x,x)+5↑p
.text:00401280                                         ; DATA XREF: .data:off_414018↓o
.text:00401280                 push    ebp
.text:00401281                 mov     ebp, esp
.text:00401283                 push    eax
.text:00401284                 mov     eax, ebx
.text:00401286                 pop     eax
.text:00401287                 cmp     ebp, esp
.text:00401289                 call    __RTC_CheckEsp
.text:0040128E                 pop     ebp
.text:0040128F                 retn
.text:0040128F sub_401280      endp

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2018-12-12 21:44 被aqs编辑 ,原因:
收藏
免费 3
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//