-
-
[原创]看雪秋季赛第2题出题思路
-
发表于:
2017-10-30 17:04
7052
-
看雪秋季赛第2题出题思路
by Fpc
--------------------------------------
首先,第2题完赛了,近1万的关注度,99人过关,从防守方的角度看是很理想的,有参与,而且付出努力(通篇看代码)后可解,努力就可能有收获。
ctf防守方有多种选择,比如之前比赛有强度很大的壳,无人攻破,是一种思路;或者明码比较,这也是一种思路。年中赛时,有的题令人印象深刻,爱琴海vb pcode加了smc改关键运算代码,readyu数论或密码学应用,还有令人感叹的围绕brainfucker出题和解题技巧,等等,各有侧重,不管能否解出与否,相信参与者都会在相关方向上有所学习和收获。
防守方最难是题目难度与通过率的估计,出得太难,难以说这是防守方的成功;出得太易,攻防双方都觉得不爽。个人理解,出题解题就是制迷与猜迷的过程,要达到一个平衡很不容易,最终目标即是完成一个较好的心理攻防游戏。
这道题的思路也是很偶然。大家知道,任何一本C语言教材,开始介绍输入输出时就会涉及到printf, scanf,但一般到高级应用部分才会告诉你scanf有栈溢出漏洞,缓冲区要够用才行。《软件漏洞分析》一书中,failwest也是从strcpy(比scanf应用范围更广)这个函数入手,逐步介绍栈溢出知识的。于是就想,为何不用scanf溢出来控制程序流程,让它走到真正的验证处,实现明暗的转换,对验证处再加以适当的花指令保护。
题目的设计主体是VC6作个框架,以masm作辅助。有网友怀疑我改了系统函数,这个要求对我是有点高了
主程序是VC6,流程比较简单。设了两个flag,实际有用的一处,模拟注册成功过程
最后感谢众位解题大神,有的分析已经超出作者的预想,我也学到很多;感谢林版、netwind等各位版主辛苦地维护论坛;感谢kanxue长期以来为大家提供这一方乐土。希望以后还有机会将游戏进行下去。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!