-
-
[原创]看雪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
查看下一个。
终于,发现了关键信息:
这就是程序弹出的错误信息,我们查看完整的脚本:
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
- [原创][安全运维向]模拟搭建小型企业内网 14349
- 攻防世界-PWN-高手进阶区-难度3到4-全部题解 18861
- [原创]攻击格式化字符串在.bss段的程序(bugku-pwn6) 15274
- [原创]XCTF攻防世界-pwn新手练习区全部十题解析 14392
- [原创]KCTF2021 第二题 write up 5549