Writeup 4 2020 - 之江杯 - Modbus题目信息modbus 工厂车间流水线某工业控制设备遭到不明人员攻击根据对攻击行为的溯源分析发现攻击者对设备进行了程序上传操作请根据网络数据流量协助运维人员查找证据找到flagflag格式为flag{}。解题思路、过程根据题目描述“程序上传操作”这个关键词这道题的解题思路很明确在 Modbus 协议中程序上传Program Upload通常与特定的功能码和寄存器地址相关而不是像常规题目那样直接搜索 flag。 核心思路定位“程序上传”流量标准 Modbus 功能码如 03、06、16主要用于读写寄存器而“程序上传”往往涉及用户自定义功能码65–72、100–110或特定文件寄存器操作。我们需要重点排查这两类流量。优先检查功能码 65–72 和 100–110Modbus 规范中65–72 和 100–110 是用户自定义区间厂商常用于实现程序上传、固件下载等特殊操作。用Wireshark打开题目提供的附件6.pcap在过滤器中输入命令modbus.func_code 65 modbus.func_code 72过滤结果全是功能码 66。功能码 66 是什么Modbus 功能码 65–72 属于用户自定义区间。66 不是一个标准公开功能码厂商可以自定义。题目说“程序上传操作”那功能码 66 很可能就是这道题里模拟的程序上传/下载私有功能码。既然全是 66那 flag 大概率就藏在这些功能码 66 的请求或响应数据段里。现在要做的追踪 TCP 流右键分组列表中任意一个包 → 追踪流 → TCP Stream在弹出的窗口中发现功能码 66 的包全部集中在流 0 和流 1 中。在流 1 里找到 flag 的三段十六进制的字符串分别藏在三个Bt..标记的后面第一段靠前位置-m.....Bt..666c61677b......→666c61677bflag{第二段中间位置3......Bt..3138676854......→313867685418ghT第三段靠后位置.D.....Bt..317772337d......→317772337d1wr3}拼接解码666c61677b 3138676854 317772337d 666c61677b3138676854317772337d转 ASCII十六进制ASCII66 6c 61 67 7bflag{31 38 67 68 5418ghT31 77 72 33 7d1wr3}最终 flagflag{18ghT1wr3}关键规律这三段都出现在Bt..之后说明Bt..是这个私有协议里数据块的起始标记。出题人把 flag 拆成三段分别嵌在三个功能码 66 的响应报文数据块里Bt..666c61677b→ 第一段Bt..3138676854→ 第二段Bt..317772337d→ 第三段解题总结这道题和上一道“工控现场的恶意扫描”思路一致Modbus 过滤→ 全是功能码 66用户自定义对应“程序上传”统计流分布→ 集中在流 0 和流 1追踪流 → TCP Stream → 流 1搜索 flag 特征字符串拼接 → 转换 → flagRambo2026年国庆节