array(5) { ["chapterid"]=> string(8) "49409222" ["articleid"]=> string(7) "7300050" ["chaptername"]=> string(8) "第29章" ["content"]=> string(3307) "赵一鸣在午饭后回来了。

他推门进来的时候谁都没看,径直走到工位区坐下,打开题库,选了杂项方向——一道内存取证题。

内存取证是杂项方向里偏底层的类别。题目给了一个raw格式的内存镜像——你可以把它理解成电脑运行时某一瞬间的"快照",里面记录了那个瞬间电脑上所有正在运行的程序、所有内存里的数据。林墨在旁边看了一眼——赵一鸣要找的是一个隐藏在系统里的恶意程序。

赵一鸣用Volatility框架加载了内存镜像,列出了所有进程。一百多个,大部分是正常的Windows系统进程。他逐行扫描,目光在一个叫"svchost.exe"的进程上停住了。

svchost是Windows的系统服务进程,正常情况下由系统的服务管理器启动。但赵一鸣发现这个svchost的父进程不是服务管理器,而是"explorer.exe"——资源管理器。这意味着这个svchost不是系统服务,是有人手动启动的——伪装成系统服务的恶意程序。

他进一步检查了这个进程的内存映射,找到了一段8KB大小的可执行内存区域——不属于任何已加载的程序模块,是一块"凭空出现"的可执行代码。这就是shellcode——一段直接以机器码形式存在的攻击代码,没有文件载体,只存在于内存中。注入者通过这段代码建立了一个反向连接,让被控制的电脑主动连回攻击者的服务器。

整个过程干净利落。赵一鸣在杂项方向的实力比林墨预想的强——他的问题不在技术,在心态。当他不钻牛角尖的时候,他的直觉和执行力都是第一梯队的。

但他跟林墨之间还隔着一层东西。上午的冲突像块透明玻璃横在中间——看得见对面,碰不到。

赵一鸣解完题,靠回椅背,摸了一下手腕上的疤。然后他站起来,走到林墨工位旁边。

"你下午做的什么?"他问。语气跟上午不一样了——不是吵架的语气,是那种吵完架之后想找个台阶下的语气。

"密码学和杂项。"

"杂项那道DNS隧道?"

"嗯。"

"我刚才那道内存取证也挺有意思。"赵一鸣说。他没有道歉——他的字典里大概没有这两个字。但他在主动找林墨说话,这本身就是一种表态。

林墨点了一下头。"我知道。我看到了你查VAD树的那步——很快。"

赵一鸣的嘴角动了一下。不算笑,但比上午好。

陈逸飞选了Pwn和Crypto。

Pwn题他做了一道三星的格式化字符串漏洞——格式化字符串漏洞简单说就是:程序在输出信息时没有检查用户输入的内容。你输入一段特殊格式的文本,程序不仅会把它打印出来,还会把内存里的秘密数据一起吐出来。就像你对银行柜员说了一句话,柜员不仅回了你一句话,还顺手把保险箱密码念了出来。

他解题的方式跟别人不一样:没有用现成的工具,而是自己写了一个Python类,专门用来构造这种攻击。这个类做得足够通用——以后遇到任何格式化字符串题都可以直接调用。他不是在做一道题,是在做一个工具库。这种习惯不像学生——更像在正规安全团队里待过的人。" ["create_time"]=> string(10) "1785963705" }