Modbus协议流量分析

Modbus协议流量分析
宇桑MAX记一次 Modbus 协议流量分析
首先协议分级能够发现是 Modbus/TCP 的类型的流量。
常见的功能码:
1 | 1:读线圈 2:读离散输入 3:读保持 4:读输入 5:写单个线圈 6:写单个保持 15:写多个线圈 16:写多个保持 |
首先先过滤一下 modbus 协议的流量
翻了翻,发现该流量包中只有两种功能码,一个是 3(读保持)一个是 6(写单个保持)
首先先将功能码 6 且选中进行过滤,并将 data 都提取出来
转码也并没有什么发现
接下来同样的方法过滤功能码 3
发现每次的回复包都有一组可疑的数据,并且随着包的标号往下看,从每一组的第一个数开始依次轮换了三次,也就是有四组数据,把他们都提取出来
1 | 71 71 81 63 79 64 43 40 41 41 112 65 35 86 83 101 98 77 96 91 74 93 88 71 90 85 68 73 68 85 90 93 0 1 2 3 4 3 2 1 |
直接转 ascii 码并不正确,但是由于数据可疑并且长度差不多,我们计算一下标头数据和 flag 头字母 ascii 码的偏移量,发现都是一样的
利用脚本加上偏移转换成 ascii 码得到 flag
为了让大家快速了解它,我总结了几个核心功能点:
1 | c =[71,71,81,63,79,64,43,40,41,41,112,65,35,86,83,101,98,77,96,91,74,93,88,71,90,85,68,73,68,85,90,93,0,1,2,3,4,3,2,1] offset = ord('H') - c[0] for i in range(0, len(c)): print(chr(c[i]+i+offset),end='') |
输出:
1 | HITCTF2023{M0dbus_so_so_so_easy}!#%')))) |
評論
匿名评论隐私政策
✅ 您无需删除空行,直接评论以获取最佳展示效果









