前两天,HWS计划第七期山东大学站专场活动网络空间安全技术挑战赛在山东青岛举行。我作为山东大学网络空间安全学院的选手,参加了本次比赛的网络安全赛道,与来自全国多所大学的选手经过线上初赛和线下决赛两轮角逐,最终获得一等奖。
大一时因为偶然的机会接触到CTF,我便对CTF比赛产生了极大兴趣,逐渐对信息安全领域的技术产生热爱。因为热爱,所以坚持。即使在读研究生后,CTF也是我生活中必不可少的一部分。我经常在科研之余,看看赛事日历,注册比赛账号做几道题来保持手感和对当下出题风格敏感度,和师傅们“吐槽”和交流比赛心得。
在以往的CTF团队赛,我一般负责在战队里crypto方向的题目,在re(逆向分析)和pwn(漏洞利用)方向更多的是作为辅助,并不是那么熟练。而本次比赛是CTF个人赛,这意味着除了自己擅长的方向,我还需要解决其他方向的题目。题目更加偏向硬件二进制安全,re和pwn题目分值占比较大,这对我来说是一个不小的挑战。
初赛从11月18日下午开始,总共持续30个小时。第一天的情况并不好,只抢到了一道安卓题的“二血”(第二个做出题目的人,前三血有额外加分)。Re方向的三道题目在我看来并不那么容易,需要花时间去分析,但是隔壁选手很快解决掉了所有re题目,这无疑给了我很大压力。关掉排名界面,我把注意力全部集中在题目的分析,根据经验和直觉,寻找可能会存在漏洞的点,再去检索相关信息,逐渐理清思路整理出攻击链。等我写完攻击脚本交上flag,外面天已经亮了。简单休息了几小时后,第二天顺利了许多,我成功冲上了排行榜的第一名。
到决赛场上,我发现唯一一道crypto是不熟悉的侧信道功耗分析,由于检索和学习成本高,时间紧迫,于是临时转换做题策略,先解决安卓native逆向题。题目提供的ARM32、ARM64、x86、x64四种架构的ELF文件中,我先从x64入手通过出现的特殊常数识别出了相应编码,随后成功逆向完整个流程。另一道pwn题中的漏洞点比较清晰,但是我并不清楚libc版本。通过反复尝试,我匹配了具体的libc版本,最后从libc数据库中匹配到赛题对应的版本,顺利利用程序漏洞拿下目标机器的控制权。
感谢我的导师魏普文教授对我参加信息安全各类竞赛的支持,当我遇到困难时,他会耐心地和我探讨和解决问题,留出足够多的时间让我安心准备比赛。同时作为一名在山东大学网络空间安全学院的学生,我还要感谢学院提供的CTF开放实验环境,让我有更多实质性的学习和提升的机会。学院不定期举办“Hash Club”技术研讨会、组织网络安全竞赛和支持学生参与研究项目,让我能够与同行交流,了解前沿学术和分享实践经验。这些活动不仅扩大了我的知识视野,也使我有机会在实践中应用所学。