首页
社区
课程
招聘
[原创]看雪 2022·KCTF 春季赛 第九题 同归于尽 WriteUP
发表于: 2022-5-31 10:23 10539

[原创]看雪 2022·KCTF 春季赛 第九题 同归于尽 WriteUP

2022-5-31 10:23
10539

当天中午写完第八题的WriteUP,就马上溜过去看第九题了,不过当看到出题战队的名字——中午吃什么,就顿时陷入了深深的沉思,之后立即去吃了顿好的,果然美食是最能安抚人心的。

老样子,菜狗镇楼.jpg

拿到题目,看了眼大小,822KB,心中顿时感到不妙,丢到X64DBG,调试跟踪一波,得到如下信息。

程序内字符串均已加密,运行时通过xor特定值解密。

程序启动时创建了一个socket线程,会接受数据

共三次数据,三条线程,第一次解密一串16进制值,第二次BASE64第一次的值,第三次MD5第二次的BASE64

主线程中给出了FLAG首位为A,长度为32

主线程在一个充满了垃圾代码与套娃的call里执行判定(套娃CALL我们命名为bad)

3.中的数据如下

35 C9 ED AA 55 55 55 EC DD 55 65

NcntqlVVVezdVQ==

AFF7AEFB8AE17A47B6B915FA9818CB16

当时没注意到第三个MD5值其实就是FLAG(明明都暗示首位为A,长度32了),还特意去分析了下后续的流程,属实是中午吃饱了,就开始摸鱼了。

以上为fake news,"假"数据与FLAG存在细微差别,读者可以自行比对一下。

下面是分析过程的一些总结,那个SM4刚开始确实没看出来,刚开始还以为是自写的算法(害怕),后来查表才发现是SM4,属实是萌新的悲伤。

以下出现的函数地址均为RVA。

分析一下套娃CALL,也就是bad函数(0x3A44D)(函数结尾居然是ret 0x2460,这调用深度有点恐怖啊),我们会发现其中大部分是jnb(基本无用)和jp(范围内会有有效调用),每次调用函数前会执行一个类似memmove的函数(0x3CA3),那么我们就可以分析对memmove函数(0x3CA3)的引用,来寻找别的有效调用,通过抽样分析10个调用,我们发现如下规律。

这是有一定功能的函数调用:

这是套娃函数的调用方式:

利用该特征,我们可以使用特征码搜索,定位出有一定功能的函数,最终找到几个有用的函数。


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

最后于 2022-5-31 12:31 被上学困难户编辑 ,原因: 修正语段
收藏
免费 4
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//