电谷杯 WP

moshui Lv2

头一次做工控相关的题目做的不太好

这里只有我明白的题目,队友web手做非常高分的题

最后惨痛第十名,其实很多题已经很接近了,唉。
所以这次把快做出来的题,通过询问其他队伍,也给他记录下来

我做出来的

异常的PLC连接检查

首先打开数据包文件,发现是S7协议

这种题的一个套路就是找写入的字节
所以我们筛选一下s7 写入的数据包
s7comm.param.func==0x5

根据上面文件名提示:S7_Job,所以要找所有Job的数据包
说以筛选的条件为:s7comm.param.func==0x5&&s7comm.header.rosctr=="Job"
然后我们全选一下,把他弄成txt文本(笨方法)


所以搓个python脚本把data抠出来

1
2
3
4
5
6
7
8
9
10
11
12
flag = bytearray()
with open("1.txt") as f:
while True:
txt = f.readline()
if(txt.find("Data:")!=-1):
#print(txt[txt.find("Data:"):-1])
if(txt[txt.find("Data:"):-1].find("00")==-1):
flag.append(int(txt[txt.find("Data:")+6:-1],16))
print(txt[txt.find("Data:"):-1])
print(flag)
#print(flag)
#最后返回值为bytearray(b'flag{happy_vacation}')

异常的产线(好运气还让我拿了个1血)


modbus-alarm.pcapng附件名字透露了考察modbus协议,还是根据查到的套路筛选出,写线圈和写寄存器。
使用((modbus.func_code == 5 )||(modbus.func_code == 6))筛选一下,在第二个写寄存器中,发现了点不一样的。

base32的fl对应了MZWG

所以我们手动把写寄存器的抠出来就行了,这里千万注意一下要用时间顺序排序,我一开始就卡这里了,后面顺利拿下。

1
MZWGCZ33ONSXCZTKNJYXG4L5 -> flag{seqfjjqsq}

神奇的104


根据提示直接过滤一下104报文。
iec60870_104
过滤了一下之后,发现报文最后一位会变动,所以考虑到二进制。
方法就是把他提出了,然后用CyberChef把他解出来。这里有个坑,就是他其实需要加上ip.dst==192.168.3.129这个筛选条件,当然这里纯试出来的

我们依然使用导出txt的方式来扣数据,怎么导出我前面有写。嗦个脚本最后

1
2
3
4
5
6
7
8
with open("104.txt") as f:
with open("1.b",'wb') as f2:
while True:
string = f.readline()
if(string == "End"):
break
if(string.find("ON/OFF:")!=-1):
print(string[len(" .... ..."):len(" .... ...")+1],end ="")

以下是失之交臂的题目

数据的异常


发现是base64的数据,把他都抠出来。发现是个诗,但是大写字母拼起来就是FLAG啥的

但是最后要把它转成小写,这里主要是最后没时间做了。

失灵的组件


下载下来看一下其实是个zip压缩包,解压一下。

开开文件发现了个提示,应该是拿这个打开

经过了一些漫长的下载安装,终于能打开了。

此时我们点击脚本,动作,变量,全局

在这里就发现了这种可疑数据,拿出来。
我在这里就是觉得这个没有flag啥的,但是其实褒一个flag{}就行,我吐了

其他的题我也不会了,梯形图那个需要的博图18倒是下载了,但是看起来巨麻烦就没做。


  • 标题: 电谷杯 WP
  • 作者: moshui
  • 创建于 : 2024-05-17 17:39:20
  • 更新于 : 2024-05-18 00:27:42
  • 链接: https://www.moshui.eu.org/2024/05/17/电谷杯-WP/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论