array(5) { ["chapterid"]=> string(8) "49409200" ["articleid"]=> string(7) "7300050" ["chaptername"]=> string(7) "第7章" ["content"]=> string(8474) "林墨从抽屉里拿出方远行给他的选拔赛报名名单,摊在桌上。二十三个名字,A4纸打印,方远行用的是学院信纸,抬头印着"苏科大网络空间安全学院",下面一行小字"厚德博学 求实创新"——校训。林墨每次看到这八个字都觉得像在念经,跟他的生活没有任何关系。

"你在想什么?"苏晚晴拉椅子坐到他旁边。

"攻击者筛了一千个人的数据。这二十三个报名选拔赛的人,有没有可能也在他的筛选范围内?"

苏晚晴拿起名单从头到尾看了一遍。"二十三个人里,计算机学院十二个,软件学院六个,网络安全学院三个,信息管理学院两个。年级分布:大三八个,大二十一个,大四四个。"

"赵一鸣不在名单上。"

苏晚晴愣了一下,重新看了一遍。"确实没有。他说他报名了,但名单上没有。"

"要么他在撒谎,要么他的报名被人删了。"

苏晚晴拿出手机,打开学院教务系统的报名页面——她用的是方远行给的管理员账号。报名列表的后台数据里,赵一鸣的报名记录确实存在,但状态是"审核未通过"。审核人一栏写着:李德明。

"李德明把他卡了。"苏晚晴说。

李德明。网络空间安全学院副院长,分管教学和学生工作。在林墨的印象里,李德明是一个永远穿着短袖衬衫、永远把扣子扣到最上面一颗、永远用保温杯喝枸杞水的人。他说话慢条斯理,从不发火,但你总觉得他在记录什么——你的每一句错话、每一个违规举动,都会在某个你想不到的时候被翻出来。

"为什么?"林墨问。

苏晚晴点开赵一鸣的学籍档案。页面加载了两秒——教务系统的前端是五年前的研究生毕设作品,加载速度取决于数据库的心情。弹出一份标准的学籍信息表:赵一鸣,计算机科学与技术专业,2024级,入学成绩排名全系第三十七。

"处分记录"一栏有两条。

第一条:大一上学期,"未经授权访问校园一卡通系统数据库",严重警告处分。

第二条:大一下学期,"在课程实验中利用漏洞篡改实验环境配置",记过处分。

两条处分,审核人都是李德明。

一卡通的事林墨听说过——去年秋天校园里传过一阵。说是有个大一新生发现一卡通充值接口的签名校验有缺陷,可以通过篡改充值金额实现"一元充十元"。赵一鸣没有真的充——他只是写了脚本验证了漏洞的存在,然后截了图发到了班级群里,说"你们看这个接口是不是有问题"。

截图传到了辅导员那里,辅导员传到了李德明那里。李德明的处理方式是:严重警告处分,理由是"未经授权访问数据库"。赵一鸣试图解释他只是验证漏洞、没有实际获利,李德明的回应是"系统安全不是学生应该测试的范畴"。这句话后来成了计算机学院学生之间的一个笑话——"系统安全不是学生应该测试的范畴",那网络安全学院是教什么的?做饭吗?

第二件事更冤。操作系统课的实验环境是一台Docker容器,老师要求学生完成进程调度的编程实验。赵一鸣做完实验觉得无聊,顺手测了一下容器的隔离性——发现容器的capabilities配置有问题,可以通过cap_sys_admin提权到宿主机。他在实验报告的附录里写了这个发现,附上了完整的复现步骤。

实验老师给了他零分。理由是"篡改实验环境配置"。李德明加了一条记过处分。理由是"利用漏洞破坏教学设施"。

两次处分的共同点:赵一鸣的技术判断都是对的,但他的行为被当成了违规而不是能力。

"他的技术是真实的。"林墨说,"但他没有一个合适的出口。"

"你觉得他值得招进队?"

林墨没有立刻回答。他想起赵一鸣说"差一行就通的exploit"时嘴角那一沉。那种表情他见过。两年前他自己也有过——凌晨三点调一个注入payload,差一个引号,试了四十遍,第三十九遍的时候差点把键盘摔了。第四十遍过了,他没有欢呼,只是靠在椅子上看着屏幕上弹出的flag,坐了很久。

那种感觉不是开心。是一种混合了释然和疲惫的东西——你花了很多时间证明自己能做到,但做完之后你不确定这个证明有没有意义。

"选拔赛让他参加。"林墨说,"如果他能证明自己,我去跟方老师谈。李德明卡的是报名审核,但方老师有权限直接指定校队成员。"

"你什么时候变得这么好心了?"

"不是好心。"林墨的目光落回屏幕上那十一条红色标记,"他看到了ZDP的请求头。他是目前为止唯一一个在技术层面接触过这条线索的外人。我需要他的观察力——但前提是他能通过选拔赛证明他不仅仅有观察力,还有执行力。"

苏晚晴没有再质疑。她拿起笔,在赵一鸣的名字旁边画了一个问号。笔是黑色的签字笔,她写字很用力,问号的弧线在纸上压出了一道痕。

"名单里还有一个人。"她翻到第二页,指着一个名字,"陈逸飞,软件学院,大三。这个人有点意思。"

林墨看了一眼。陈逸飞,软件工程专业,2023级。学籍信息干干净净——没有处分记录,没有异常表现,GPA 3.2,中等偏上。从纸面上看,这是一个完全普通的学生。普通到无聊。

"哪里有意思?"

"他的网络痕迹是空的。"苏晚晴说,"我昨天晚上用他的名字和学号做了一次OSINT检索——GitHub、CSDN、博客园、知乎、微博、贴吧、QQ空间,全部查过。没有账号,没有发帖记录,没有代码仓库。"

"一个软件工程的大三学生,在互联网上没有任何技术痕迹。"

"对。这只有两种可能:要么他真的不碰技术,要么他刻意抹掉了自己的一切痕迹。"

"你觉得是后者。"

"一个不碰技术的人不会报名CTF选拔赛。"

林墨看着陈逸飞这个名字。三个字,宋体五号字,在A4纸上不占什么分量。但一个在互联网上完全隐身的软件工程学生报名参加网络安全比赛——这个组合本身就构成了一个问题。

"选拔赛上看他。"他在陈逸飞的名字旁边也画了一个问号。

两个人花了接下来的一个小时把剩余二十一份名单过了一遍。大部分是普通的技术爱好者——刷过几十道题、参加过校内编程竞赛、对网络安全有基础认知但没有实战经验。有四个研究生报名,方向偏理论和密码学。有一个大四的师兄报名动机可疑——他简历上写的是"丰富简历经历",这种人在比赛里通常十分钟就放弃了。

七月的阳光从百叶窗的缝隙里切进来,在地板上画出一道道平行的光带。光带随着太阳移动缓慢平移,像一个极慢的钟。空调嗡嗡响着,效果约等于一台电风扇。林墨的后背已经汗湿了,但他没注意——他看数据的时候会忘记身体的存在。

"还有一个人。"苏晚晴在过完名单后说,"不是报名名单上的。是方老师昨天发邮件让我关注的——周可然,网络安全学院,大三,我的同班同学。"

"为什么不自己报名?"

"她在法国交流了一个学期,上周刚回来。错过了报名时间。方老师说可以直接给她一个校队名额。"

"你了解她吗?"

苏晚晴想了一下。"她是密码学方向的。学术能力很强——大二的时候以第二作者身份在密码学顶级会议发表了一篇论文。但实战经验我不清楚。我们在学院里认识,但没怎么合作过。"

"什么会议?"

"CRYPTO。"

林墨抬起头看了苏晚晴一眼。CRYPTO是密码学领域的三大顶会之一,本科生能在上面发论文——哪怕是第二作者——说明这个人的数学功底不是"很强"能形容的。

"让她进。"林墨说,"密码学我们确实缺人。"

"那现在队伍就是:你,我,赵一鸣待定,陈逸飞待定,周可然确定。还差一个名额。"

"选拔赛看完再定。"

苏晚晴合上名单,把笔放回桌上。她看了一眼窗外——太阳已经偏西了,光带的角度变了,从地板爬上了墙。七月的白天很长,五点半了天还亮着。" ["create_time"]=> string(10) "1785963691" }