首页
论坛
专栏
课程

分享:


大家好,我是胡一米。这期视频是关于2016年看雪CTF第7题解题资料。

一、简介

1.1 录制说明

视频是基于其他大佬文字Writeup录制的,所以在视频操作之前就已知了该题中的各种坑,如反调试等,所以不再演示踩坑过程。

1.2 录制参考

第7题主要参考了作者本文的叙述、HighHand、风间仁的Writeup,链接如下:

风间仁:

https://bbs.pediy.com/thread-213966.htm

HighHand:

https://bbs.pediy.com/thread-213981.htm

1.3 内容简介

在本期中,主要讨论2个问题。这2个问题可能与最终的Key没有太大的联系,但题目中既然出现了,还是说一说。此2个问题分别是:

a. 通过SEH异常执行核心代码

b. 两人取数和最大,递归搜索

二、视频操作

2.1 静态分析定位关键点

结合其他大佬的分析过程,可以直接定位到关键点。.

类似的都是通过SEH触发异常来执行关键代码

Patch的方法在29题有说到。

2.2 动态调试其加密过程

通过动态调试,理解程序的递归含义。

(图片请看pdf,这里不弄格式了)

博弈问题

941rPYOWMF3C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C69BKAKAKAKAKAKAKAKAKAKAKAKAKK8AE614

141622224F224C48C6n522GM6M2822C82822221F2eII2AUGig264w284ICIl1242M262G226S2Icq6A6o442

2.3 验证码与多解问题

使用visual studio,编译作者的注册机,即可得到正确的注册码。

至于出现多解的原因有2个:其一是在验证key时,由一个博弈问题变成取数问题,这就导致了更多种的取法;其二是取法(flag)到key的转换方法不唯一。具体叙述如下:

以下所说的flag都是风间仁writeup中的flag,具体含义是:为1则代表被取了;为0代表没有被取走。

风间仁通过递归搜索,得到了某一个flag。总共的flag有330个,但是风间仁只取了其中的某一个。

但是这一个flag转换成key的方法不是唯一的。

如风间仁转化为:

941rPYOWMF3C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C69BKAKAKAKAKAKAKAKAKAKAKAKAKK8AE614。

其实也可以转换为:

941rPaOUMF3C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C69BKAKAKAKAKAKAKAKAKAKAKAKAKK8AE614。

这两个key,都对应同一个flag,也就是对应同一个递归解法。换句话说:flag和key是一对多的关系。这就导致了每个flag可能对应多个key。进一步地,又存在多个flag,这使得key的数量会更多。在这么大范围的key中选择一个第10位为F的,同样存在很多。

0101

1010101010101010101010101010101

010110101010101010101010101010101010101010101010101010101

三、小结

题目很好。

上传的附件:

上一篇 :
下一篇 :
讨论 (0)
沪ICP备16048531号-1
沪公网安备 31011502006611号