首页
社区
课程
招聘
[原创]看雪CTF.TSRC 2018 第十题 侠义双雄 WP
发表于: 2018-12-21 10:47 7754

[原创]看雪CTF.TSRC 2018 第十题 侠义双雄 WP

2018-12-21 10:47
7754

先看一眼界面:
图片描述

于是查PEiD,发现是Delphi编译的,直接用DeDe找到窗口过程:
图片描述
图片描述

其中 Button1Click 函数响应的是右上角的关闭按钮,就把目光转到了 Button2Click 函数上。但无奈调试时发现在 Button2Click 中的断点一直没有断到过,只能再看看 FormCreate 和 FormShow 中有没有猫腻了。在 FormShow 中发现了如下代码信息:
图片描述
图片描述
图片描述

哈哈,竟然用HTML画界面,用vbscript弹窗口,那验证代码肯定在ckpswd()中了!
毫无疑问,ckpswd()函数肯定是js代码了,而且根据上面的HTML代码来看,中间部分数据是加密的,那他肯定要解密这段数据交给HTML解析函数去处理,这时候直接观察这段数据解密过程(我直接F9运行起来后内存搜索了),最终发现解密完后的HTML代码如下:

发现解密出的js代码还有一次解密操作,于是解密最终的js代码:

发现Key:kanxueCTF2018bySimpower91,这个key竟然在最终cklswd()代码解密之前就存在了(震惊)!

直接用内存搜索的方法找到了解密后的js代码,感觉有些过意不去啊,作者的解密逻辑都没有分析,回头来看看作者是怎么解密的吧。

用IDR导出分析后的Map文件,使用开源的IDA插件 ida-pro-loadmap 导入MAP文件,这样就可以识别这些库函数了(插件在库函数头的注释中写上了函数名,就方便手动修改函数名了),修好函数名了再用IDA导出MAP文件给OD使用:
图片描述

看下部分代码:
图片描述

这代码逻辑肯定是作者构造的,于是开始调试分析。

重点在sub_467ACC -> sub_467878 -> sub_46750C -> sub_467938中,sub_467878函数结尾为jmp [esp-4+var_3C]sub_46750C中有一句call dword ptr [ebx+1030h]sub_467938中有一句call dword ptr [ebx+1060h],这些都是疑点。

调试后发现作者在利用栈来布局数据和ShellCode,而作者对栈的使用也是比较夸张的,直接承包了整个栈空间:
图片描述

sub_467938call dword ptr [ebx+1060h]是进入函数sub_467974,而该函数会根据 4691AF 位置的数据解密出如下ShellCode,这段ShellCode会作为sub_46750Ccall dword ptr [ebx+1030h]的参数:

sub_46750Ccall dword ptr [ebx+1030h]是执行在堆中释放的代码:

sub_467878函数结尾的jmp [esp-4+var_3C]是跳转执行一句代码再返回到指定位置,这句代码就是上面解密出的ShellCode中的,例如:

时间问题,没有调完,有空以后再填坑吧。直接写出目前我调试后发现的代码逻辑吧:

目前不能下结论,由于作者忽略了HTML代码在内存中很容易搜到的问题,导致题目很快被破解了,不然完整分析解密过程还是需要比较长的时间~

 

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2018-12-21 10:51 被KevinsBobo编辑 ,原因:
收藏
免费 5
支持
分享
最新回复 (5)
雪    币: 23080
活跃值: (3432)
能力值: (RANK:648 )
在线值:
发帖
回帖
粉丝
2

后续见大佬 ODPan 的文章 https://bbs.pediy.com/thread-248550.htm
sub_467878函数结尾jmp [esp-4+var_3C]跳转后的位置,逐条收集解密、修复过的ShellCode就能找到解密js脚本的函数:sub_4677EC

2018-12-21 12:27
0
雪    币: 8224
活跃值: (1296)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢分享,支持分享
2018-12-21 13:29
0
雪    币: 1470
活跃值: (74)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
4
本来有非预期解,大佬非得按作者思路解~大佬就是大佬
2018-12-21 14:37
0
雪    币: 23080
活跃值: (3432)
能力值: (RANK:648 )
在线值:
发帖
回帖
粉丝
5
新月之铭 本来有非预期解,大佬非得按作者思路解~大佬就是大佬
我是直接搜内存得到解的,但是看到作者构造的代码,感觉不调一遍对不起作者啊
2018-12-21 15:14
0
雪    币: 1470
活跃值: (74)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
6
KevinsBobo 我是直接搜内存得到解的,但是看到作者构造的代码,感觉不调一遍对不起作者啊
其实也不是~分析了大半天没结果,最后内存里搜到了。是作者戏弄了我们
2018-12-21 17:49
0
游客
登录 | 注册 方可回帖
返回
//