MMS
工控领域的TCP协议,有时wireshark会将response包解析为tcp协议,影响做题,如果筛选mms时出现连续request包,考虑wireshark解析错误,将筛选条件删除手动看一下
initiate(可以理解为握手)
initiate-RequestPDU
initiate-ResponsePDU
confirmed(可以理解为交互,即传数据)
confirmed-RequestPDU
confirmed-ResponsePDU
通常情况为
1轮initiate:即发送1个initiate-RequestPDU,接收1个initiate-ResponsePDU
n轮confirmed:直到会话主动关闭或被动断开即confirmed-RequestPDU和confirmed-ResponsePDU交替发送和接收
交互时的指令称为confirmedService
常见的confirmedService有
对象操作
getNameList (1)
read (4)
write (5)
getVariableAccessAttributes (6)
getNamedVariableListAttributes (12)
文件操作
fileOpen (72)
fileRead (73)
fileClose (74)
fileDirectory (77)
例题1 HNGK-MMS
题目要求:分析文件找出flag
- 根据题目名称过滤出MMS数据包,发现前两个包为请求握手,观察第三个包发现read为4
再找其他数据段发现itemId数据不一样,仔细观察都是LLN0开头 - 过滤LLN0开头的数据
选中过滤器
(mms) && mms.itemId contains “LLN0” 没啥发现
然后过滤一下非FFNO的数据,发现三条数据
(mms) && mms.itemId &&!(mms.itemId contains “LLN0”)
通过观察比较发现数据疑似ascii码,因为ascii码中f为66、l为6c
itemId: LLN666i5250356j4249
itemId: LLN616732557968356j
itemId: LLAy7sxCA9wSYrVLCbr
将结果拼接一起:
666i5250356j4249616732557968356j
因为666c为flag的16进制开头,为了构建666c,让i变为c,只需要将字母i减6变成c,那么j为的:
变换后的字符串为666c5250356d4249616732557968356d
16进制转字符串为flRP5mBIag2Uyh5m
观察发现应该为2个字节换了下一段 flRP5mBI ag2Uyh5m
- 拼接后flag为:
参考:
https://blog.csdn.net/song123sh/article/details/127358610
https://mp.weixin.qq.com/s/LW0jQAoD5VLygHyooyUXlw