error

点击此处获得更好的阅读体验


WriteUp来源

来自bad_cat战队

题目描述

查看附件以获取flag

提示信息

题目考点

  • 流量分析

  • Modbus协议

解题思路

过滤出modbus协议的流量,发现其中除了读取Holding 寄存器之外,就是写多个寄存器,吧所有写入包过滤出来

之后进行查看,只有写多个寄存器时是写入了数据的,进一步把Write Multiple Register过滤

发现每个数据包写入了两个字节,但其实写入的内容大部分都是在0-127,而且是写入了不同位置的寄存器

首先将上述条件过滤后的数据包分组另存为modbus.pcap,之后写脚本把这部分提取出来

1
2
3
4
5
6
7
8
9
10
import pyshark
import json
cap = pyshark.FileCapture('modbus.pcap')
ret = {}
for pkt in cap:
k = int(pkt.modbus.regnum16)
v = int(pkt.modbus.regval_uint16)
ret[k] = chr(v)
print(k,v)
print(json.dumps(ret))

之后得到结果

1
{"101": "\u009f", "102": "+", "56": "r", "103": "\u00c1", "104": "K", "51": "\u00b3", "105": "N", "106": "+", "107": "c", "80": "v", "108": "\u0081", "109": "\u0082", "66": "t", "19": "\u00ab", "110": "l", "111": "Y", "112": "\u009e", "113": "-", "81": "?", "114": "\u00b6", "115": "\u00c2", "116": "\u008f", "46": "\u00c2", "117": "M", "118": "K", "59": "O", "119": "_", "20": "e", "120": "\u0083", "53": "p", "121": "f", "122": "l", "123": "a", "24": "\u0096", "124": "g", "125": "{", "126": "y", "127": "o", "128": "u", "3": "r", "129": "_", "130": "c", "131": "a", "14": "d", "132": "n", "133": "t", "134": "_", "135": "f", "136": "i", "65": "(", "137": "g", "138": "h", "139": "t", "74": "b", "41": "p", "140": "_", "141": "f", "87": "f", "142": "a", "78": "V", "143": "t", "4": "\u0096", "144": "e", "145": "}", "77": "r", "146": "K", "147": "\u00b0", "148": "\u009b", "55": "v", "149": "\u00a8", "28": "g", "70": "e", "150": "M", "151": "f", "152": "T", "153": "R", "154": "\u0095", "155": "M", "76": "g", "156": "\u0088", "157": "\u00b1", "158": ";", "54": "w", "159": "I", "22": "*", "38": "f", "160": "k", "95": "f", "79": "r", "161": "\u007f", "162": "\u00b9", "163": "\u0091", "36": "w", "85": "s", "164": "\u0087", "165": "|", "57": "\u00a7", "17": "w", "18": "t", "9": "r", "27": "b", "90": "g", "67": "t", "69": "Q", "61": "\u00ba", "26": ".", "35": "\u007f", "39": "\u009f", "25": "m", "83": "\u0094", "2": "\u0083", "43": "\u008c", "48": "k", "60": "\u0097", "75": "\u00ac"}

之后进行排序,很容易就可以发现flag

Flag

1
flag{you_cant_fight_fate}