首页
社区
课程
招聘
[原创]看雪CTF.TSRC 2018 团队赛_第6题WP
发表于: 2018-12-12 13:55 6343

[原创]看雪CTF.TSRC 2018 团队赛_第6题WP

DCO 活跃值
1
2018-12-12 13:55
6343

       程序拿到手之后,在Win10以及Win7_x86都没有跑起来,后来在Win7_x64中可以正常运行

       关键函数的定位好像很简单,看导入表发现GetDlgItemTextA和MessageBoxA这样的敏感函数,下断后就来了


       程序的流程看起来简单清晰,小菜就喜欢这种简单粗暴的

       仔细一看,好像有“猫腻”,没找到注册成功的提示

       看起来只有那个sub_401020()函数有可疑成分,跟进去一看,是个“空壳”。其实WinMain也是一个“空壳”

       猜测是哪里进行了代码修改之类的,对那两个全局错误提示的字符串参考引用,发现都是落在了sub_401040()这个函数内部。这就很头大了。。。


       突然间在IDA中Ctrl+E,看到了TLS回调,故事开始了…

       TLS回调中使用SMC技术,对代码进行修改



        其实关键是修改user32.GetDlgItemTextA,看看它修改前后的汇编代码变化效果

修改前的GetDlgItemTextA:


修改后的GetDlgItemTextA:

        很显然“猫腻”就出现在这个jmp指令上

        这也就是,之前F8步过GetDlgItemTextA函数时,所有的萎缩操作都完成了,给我们看到的只有“try again!”

       接着跟进,看到初始化一个状态数组

        接着跟进sub_401380()函数,这时F5就看起来有些吃力了

        还是手撸吧,老是F5容易营养不良

        其实逻辑很简单了,说来真惭愧,撸成下面这样才突然想起来是“八数码问题”,记性真是差的够呛


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

最后于 2018-12-12 14:12 被DCO编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (2)
雪    币: 415
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
头皮发麻,萌新表示看不懂
2018-12-14 11:13
0
雪    币: 2375
活跃值: (433)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
在Win10以及Win7_x86都没有跑起来,后来在Win7_x64中可以正常运行,直接在电脑上点击么,楼主不怕中毒么
2019-4-1 01:11
0
游客
登录 | 注册 方可回帖
返回
//