首页
社区
课程
招聘
[原创]看雪CTF_2018 团队赛 第十题 write up
发表于: 2018-12-20 01:07 5062

[原创]看雪CTF_2018 团队赛 第十题 write up

2018-12-20 01:07
5062

系统 : Windows xp
程序 : enc0_crackme.rar
要求 : 输入口令
使用工具 : ida、od、c32asm peid DeDeDark

首先用peid查看信息,直接将cm拖入peid界面即可:

Borland Delphi 6.0 - 7.0 [Overlay]

提示这是一个delphi程序,我们使用dededark打开,弹出窗口的话直接下一步直到反编译操作完成。

我们查看唯一窗口的信息:

第一个Button1控件的提示(Hint)是Exit,也就是退出按钮。而第二个按钮Button2好似没有什么特殊信息,我们查看其单击响应函数的部分代码:

对于这个函数,可以重点观察下。

我们将cm拖入ida,反编译工作完成,按下shift + F12观察字符串:

这里,由于字符串较少,仔细观察发现了可疑的字符串,004696CC 位置的字符串是脚本代码,而其部署的界面正好与程序界面相对应:

双击其交叉参考,查看更多信息:

所以有理由怀疑,Delphi程序载入了VBScript脚本来实现UI和其对应的响应函数。

我们直接用c32asm在文件中以ASCII和UNICODE形式搜索ckpswd,发现没有什么直接的线索。

在ida中已知引用脚本字符串的位置是:

我们对00469357下断,运行至469361,发现脚本字符串已经被压入栈中。此时,对其下内存访问断点,看看载入之后,会对其做什么操作:

下好之后直接按下F9运行,发现断下来之后按下Alt+K查看调用栈:

这是断在字符串转换的函数MultiByteToWideChar上了。我们删除内存断点,对新的Unicode字符串下断,然后继续F9直到断在这行代码:

这是一段字符串拷贝的代码,此时查看调用栈:

经过字符串的转换,不知道能不能发现关键信息呢,我们直接在内存中暴力搜索关键字"wrong":在内存面板右击->查找->二进制字串,在unicode一行输入wrong。按确定进行查找,按下Ctrl+l查看下一个。

终于,发现了关键信息:

这就是程序弹出的错误信息,我们查看完整的脚本:


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2019-1-22 16:10 被顾言庭编辑 ,原因:
收藏
免费 2
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//