2023年江西省“振兴杯”工业互联网安全技术技能大赛暨全国大赛江西选拔赛 Write UP
文章目录
- 一、协议分析 - modbus
- 二、协议分析 - 异常的流量
- 三、协议分析 - S7Error
- 四、协议分析 - OmronAttack
- 五、组态编程 - 工程的秘密
- 六、组态编程 - 工程的秘密
- 七、组态编程 - 简单的计算
- 八、组态编程 - 交通灯
- 九、组态编程 - 有趣的转盘
- 十、应急处置 - 登录日志分析
- 十一、应急处置 - 设备运行状态分析
- 十二、恶意程序分析 - 样本分析
- 十三、恶意程序分析 - 恶意的指令
- 十四、固件分析 - 固件后门分析
- 十五、固件分析 - 固件加密分析
入职的第一场比赛,最后一分钟被超10多名,心态崩了,神仙打架,未进决赛。最终团队排名 25+,个人得分 2015分,排名第 9。
一、协议分析 - modbus
黑客通过modbus协议向他的同伙发送了一条秘密信息,通过流量设备我们抓取到了相关的流量包,你能根据流量包找到这条信息么?
题目分析 modbus 协议,先筛选 modbus 协议,然后随便选择一条数据包右键进行 TCP 流跟踪,如下:
可以直接看到 flag 字样,直接筛选即可。
二、协议分析 - 异常的流量
请对提供的流量进行分析,发现可能存在的异常,找出flag,提交格式:flag{xxx}。
第一步:对长度排个序,看异常数据包的长度会不会跟别的数据包有差异。发现长度都是 861,看不出什么。
随便截图里找一条数据包,右键TCP流跟踪:
分离TCP 流查看,发现几段16进制片段:
拼接后 Hex 解码得:
提交 flag {EnergyRevolution} 答案正确。
三、协议分析 - S7Error
某工厂的工程师发现有一台西门子设备存在资源异常,请分析并找出异常流量的数据包编号。
题目提示是资源异常,说明响应包有对应错误状态码:
回包 error code 分类:
0x00 No error 没有错误
0x81 Application relationship 应用关系
0x82 Object definition 对象定义
0x83 No resources available 没有可用资源
0x84 Error on service processing 服务处理中错误
0x85 Error on supplies 请求错误
0x87 Access error 访问错误
对照状态码,所以应该去筛选 0x83, 筛选命令为:s7comm && s7comm.header.errcod == 0x83
得 flag{213056}, 答案正确。
四、协议分析 - OmronAttack
某工厂的工程师发现有一台设备存在异常,抓取流量后发现了黑客的端倪,你能协助他分析黑客留下的痕迹吗?
这道题是赛后做出来的。题目标题为 OmronAttack, 自然先筛选 Omron 协议数据包:
我有个习惯喜欢先对数据包长度排个序,看看有没有长度不同的数据包
看到8条可疑数据包
不像是简单的 HEX 解码,先根据流量包编号从小到大拼接数据
分析最后一个数据包的 ahevf nu): ,两两交换发现是 have fun:) , 这里可能是在提示我们对上面加密字符串字母进行两两交换,编写脚本得:
f94ScF/rv0jUS2+fs04MH+xChkzBMy4dI7R7BucEM1CkzcyJU1Au3XnH 这串密文如何解密呢?秘钥肯定是在流量里,我习惯开启 tcp 流跟踪去过滤筛选一下:
发现特别多 FINS………, 分流导出两份数据文本 :
Vscode分别打开这两个文件把 FINS………等大量相同的字符串全局替换成空字符得如下:
9600 端口 -> 49921 端口发现一串可疑字符串。5ae1e174746f6f64647373a5a56b
(tips: 无头绪的时候不妨试试流跟踪, 刚才找的加密字符串通过流跟踪也很快能找到)
5ae1e174746f6f64647373a5a56b 看着像md5编码,但是数了一下一共有24个字符,md5常见是16或者32个字符,发现中间有好多重复的,去重复得 5ae1746f6473a56b,刚好是16位,拿去md5 解密一下:
按理来说,出题方给的 md5 肯定能解开,是不是漏了什么信息。回想一下,我们密文之前做了两两交换,是不是说这串 md5 也需要两两交换才是正确的?使用刚才编写的脚本得:
a51e47f646375ab6,再拿去解密一下:
解密成功,提示rabbit, 说明是现在密码学中的 rabbit 加解密,使用 CyberChef 工具进行解密:
为什么解密不了?试了好几次,都没效果。回想自己开发数据加密如AES, RSA 加密,喜欢把加密数据再 Base64 编码,或许这里也对加密数据做了一次 Base64 加密,最终结果如下:
成功解开此题 flag{40d3b450-8ea3-46bb-b2b8-e69a3d7a50b3}
五、组态编程 - 工程的秘密
小李刚入门自动化领域,学习了组态编程技术,他将一段秘密信息放在了组态文件中并把他藏了起来,你能把他找出来么?
题目给了一张图:
看图片大小,可以排除是图片宽高遮挡问题。使用 binwalk 看下 png 是不是藏了东西:
啥也没有。试试 CTF的图片隐写题中有一种常见的题型——基于LSB原理的图片隐写。使用zsteg 工具,输入 zsteg -e b1,rgb,lsb,xy flag.png -> res.zip,解压res.zip 里面有一个12.cmp 的文件。
结合题意,是组态王软件的备份文件,使用组态王恢复工程:
六、组态编程 - 工程的秘密
组态工程文件被黑客篡改,导致程序画面功能出现问题,请协助分析组态程序,修复画面功能至正常。答案为flag{修复画面的脚本命令内容转换成HEX格式的前8位}
这类工控题要下载各种工控软件,这类软件还大装半天,比赛装软件就半天。这题是别的师傅做的,temp.MCP 查找一下对应软件打开,题干提示,画面出错,要修复画面的脚本命令内容,属性可以看到启动脚本、循环脚本、退出脚本这种。使用McgsPro版本组态软件打开, 仿真跑起来后测试功能,发现 有个窗口无法关闭
还可以看到这里脚本程序
看官方文档找到关闭窗口的脚本函数是这个
然后hex一下 前八位就是 21436C6F, 即 flag{21436C6F}
七、组态编程 - 简单的计算
初入自动化的小王被单位的工程师出题,假设FC1块的IN1接口DB1.DBW0数值为900,IN2接口为360,IN3接口为20后,FC块将获取到接口的数据并加以计算最终由OUT接口DB1.DBD6输出结果是什么? flag格式为flag{}。
打开文件发现有一个.ap16的文件,使用博途V16打开该文件:
该题去年振兴杯考过一模一样的题,签到题。打开PLCSIM Advanced软件,以及博途v16软件。
将题目中的FC1块的IN1接口DB1.DBW0数值为900带入其中运行仿真程序计算出结果:
得到flag: flag{1.985294}
八、组态编程 - 交通灯
附件是一个交通信号灯的一些资料,请你分析出当按下启动按钮后,信号灯启动控制过程中,信号灯亮、闪、灭的情况。方向及状态代号如下:东西:EW, 南北:SN, 红灯:R ,绿灯:G ,黄灯:Y, 亮:T ,闪:L 灭:F ,时间:S (1S,2S,3S,4S,5S),交通灯在一个周期内,按红绿黄灯顺序依次找出东西南北红绿黄灯的亮灭情况。如流程:南北红灯亮20S灭,绿灯亮10S闪烁灭,黄灯亮4秒闪烁3秒灭,可写为:SNRT20SF-GT10SF-YT4SL3SF。注:正确答案写成EWXX-XXXX-XXXX-SNXX-XXXX-XXXX为正确的flag。Flag格式为:flag{}
给了两张图,一份交通灯.doc 资料,但是word资料打不开。010editor 查看交通灯.doc发现文件头为 AC1024, 是 CAD (dwg),文件头:41433130。
word 转换为 dwg 后缀拿去在线 cad 转 png 网站进行转换得:
东西红灯Q 0.5, 东西绿灯 Q 0.3, 东西黄灯Q 0.4,南北红灯Q 0.2,南北黄灯 Q0.1, 南北绿灯Q 0.0,
结合这篇文章理解:https://www.wolai.com/ctfhub/s3A1zqErH54BGuyeWbWFgX
程序段遇到 T37 就会激活定时器。程序段2、6、7为连续时间,3、4、5为连续时间
程序段2:0~35s --> T35F
程序段6: 35 ~ 50s亮, SM0.5 提供一个周期为1秒钟的时钟脉冲,50 ~ 53s 闪烁 -->T15SL3SF
程序段7:53~60s亮 -->T7SF
程序段3:0 ~ 27s亮,27~30s闪烁 -->T27SL3SF
程序段4:30~38s亮 -->T8SF
程序段5:38-60s亮 -->T22SF
考虑到不确定的道路方向以及黄灯时间较短的情况,我们可以做出如下猜测:在第一组,可能为东西方向,红灯亮35秒,绿灯亮15秒并闪烁3秒,然后黄灯亮7秒。在第二组,同样可能为东西方向,红灯亮22秒,绿灯亮27秒并闪烁3秒,接着黄灯亮8秒。
两种情况都提交一下,发现 flag{EWRT22SF-GT27SL3SF-YT8SF-SNRT35SF-GT15SL3SF-YT7SF} 正确。
九、组态编程 - 有趣的转盘
车间最新设计了一个可转动圆盘设备,并设计控制程序使得转盘由西门子1200系列控制,该设备由一个转盘主体、启动程序按钮和三个限位开关组成;设备初始状态如图所示,当按下启动按钮后程序启动,限位开关1-3分别控制输入点位I0.1-I0.3,当触点与限位开关接触时,对应输入点位通电;启动按钮控制输入点位I0.0;设备转动分为内圈和外圈,转盘以逆时针转动,Q0.0输出点位控制内圈转动,Q0.1控制外圈转动,内圈转动会带动外圈一起转动,外圈转动是与内圈的相对转动(例如外圈内圈均转动90度;,则内圈转动90度;,外圈在内圈带动转动的90度;之外还要再相对于内圈转动90度;也就是总共转动180度;),触点1镶嵌在内圈上与内圈一同转动,触点2镶嵌在外圈上同外圈一同转动,转盘转动一圈所需时间为12s,操作员需要使用启动按钮方可启动程序;现在指定操作员对转盘进行模拟转动测试,操作员需要在转盘停止后按下启动按钮令转盘设备启动,直至转盘设备与图中初始位置相同后方可不再运行(即触点1、2对应如图位置)。flag格式为:10#flag{启动所需长按最短时间_总共按下按钮次数_mw3_设备停止时两个触点与中心连线最大夹角(小于等于180度;)}
开局一张图,一脸懵,无思路。
十、应急处置 - 登录日志分析
黑客通过爆破SSH的方式成功入侵了工控服务器,请从日志中分析出攻击者的IP地址,确定成功爆破出登录名/密码的时间,flag即为该时间,如9:36:33。flag提交形式为flag{xxxx}
签到题。 筛选Accpted 查看黑客爆破登录成功的日志,发现有5条。
那么是哪一条呢?里面登录成功的日志有可能是正常用户登录的。 我们要想到黑客爆破自然先会有很多密码错误的日志,然后再有一条密码正常的日志。从而排除得到 19:32:01 是黑客首次爆破成功的时间。
答案为 flag{19:32:01}
十一、应急处置 - 设备运行状态分析
操作员打开设备后,发现点击设备运行按钮后,设备不能正常启动,请帮助操作员分析程序,修复其中的问题。flag为导致设备故障的控制点所直接关联的两个子程序名称_按钮控制点名称的组合,例如:flag{[PID_count(SBR6)]_[PRT(SBR19)]_M0.0}。
看不懂,不会做
十二、恶意程序分析 - 样本分析
某电力系统部门发现来历不明的病毒攻击,样本中包含可疑攻击行为,请对样本协助分析,找到隐藏在攻击代码中的flag。提交格式:flag{xxx}
使用 64 位IDA打开,字符串搜一下flag试试,发现Py字样,是python打包的程序。
使用开源的工具 pyinstxtractor.py, 下载链接 https://github.com/extremecoders-re/pyinstxtractor
看到一个 control 控制文件,可能是黑客留下的,记事本查看发现flag:
十三、恶意程序分析 - 恶意的指令
安全公司截获了某个针对电力系统攻击的样本,样本会向指定设备的8个IOA发送控制命令,flag就隐藏在IOA中。提交格式:flag{xxx}
32 位的文件, 使用32位的IDA工具打开进入main函数:
查看伪代码。经过分析发现,将v3数组的值作为shellcode传入,结合题目意思分析, 看到v3数组类似flag,R键转字符观察并提取出来。
得:flag{f30l7a1g}
十四、固件分析 - 固件后门分析
一些厂商为方便调试和监测,可能会在产品上保留“后门”,这也为产品带来了较大安全隐患。请对提供的固件进行分析,找出其中可能存在的后门口令。flag即为口令字符串,提交格式:flag{xxx}。
题目提供一个 OCR 文件,放入 ida 中。黑客留后门,可以猜测可能存在ssh 连接,字符串搜索SSH 可以看到如下截图:
点击SSH 跳转如下:
发现了存在 SHH 的公钥和私钥, 下面还有一个secret 字符串。
查看该函数,可以断定这是黑客后门行为,该秘钥就是flag
故答案为 flag{Ovation35}
十五、固件分析 - 固件加密分析
某公司收到勒索邮件,经过分析查验后发现内网中并没有勒索病毒的痕迹,网管小张研究后发现疑似黑客对工控路由器进行了攻击,通过技术手段获取到了路由器固件,请帮助小张分析出固件并且尝试找出被加密的文件,提交格式:flag{xxx}。
一脸懵,不会做…
相关文章:

2023年江西省“振兴杯”工业互联网安全技术技能大赛暨全国大赛江西选拔赛 Write UP
文章目录 一、协议分析 - modbus二、协议分析 - 异常的流量三、协议分析 - S7Error四、协议分析 - OmronAttack五、组态编程 - 工程的秘密六、组态编程 - 工程的秘密七、组态编程 - 简单的计算八、组态编程 - 交通灯九、组态编程 - 有趣的转盘十、应急处置 - 登录日志分析十一、…...

PostMan 之 Mock 接口测试
在测试的时候经常会碰到后端开发工程师的接口还没有开发完成,但是测试任务已经分配过来。没有接口怎么测试呢? 测试人员可以通过 mock server 自己去造一个接口来访问。mock server 可用于模拟真实的接口。收到请求时,它会根据配置返回对应的…...

LuatOS-SOC接口文档(air780E)--libgnss - NMEA数据处理
示例 -- 提醒: 本库输出的坐标,均为 WGS84 坐标系 -- 如需要在国内地图使用, 要转换成对应地图的坐标系, 例如 GCJ02 BD09 -- 相关链接: https://lbsyun.baidu.com/index.php?titlecoordinate -- 相关链接: https://www.openluat.com/GPS-Offset.html-- 方案1, 经lua层进行数…...

基于华为云 IoT 物联网平台实现家居环境实时监控
01 智能家居环境监测 智能家居环境监测采用 Ruff 开发板作为主控,串口线连接温湿度传感器 DHT11 和空气质量传感器 SDS011,每5分钟采集一次数据,通过 MQTT 协议发送到华为云 IoT 物联网平台,并基于数据分析服务实时计算出整个家庭…...

【开源框架】Glide的图片加载流程
本篇文章从Glide 4.11源码入手,简单的分析整个图片请求的流程,本着 ”只见树林,不见树木“ 的原则,宏观请求流程,不细究实现细节(细节留坑埋点,之后慢慢写) 引入依赖 以下的所有分…...

win10下Mariadb绿色版安装步骤
使用绿色版的mariadb数据库管理软件,免费开源,可以用来替换MySQL。首先从mariadb官网下载绿色版本的压缩包。解压后、配置好即可以使用。 把他解压缩到C:\mariadb\之下。打开powershell: Cd c:\mariadb\bin .\mysql_install_db.exe 这一…...

wiresharak捕获DNS
DNS解析: 过滤项输入dns: dns查询报文 应答报文: 事务id相同,flag里 QR字段1,表示响应,answers rrs变成了2. 并且响应报文多了Answers 再具体一点,得到解析出的ip地址(最底下的add…...

vue源码分析(一)——源码目录说明
文章目录 一、如何下载源码(可忽略)(1)打开地址(2)复制链接(3)git clone 链接 二、源码目录说明1.可以根据你下载的源码通过package.json文件查看vue版本2.源码目录说明 一、如何下载…...

【深度学习】吴恩达课程笔记(二)——浅层神经网络、深层神经网络
笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 笔记链接 【深度学习】吴恩达课程笔记(一)——深度学习概论、神经网络基础 吴恩达课程笔记——浅层神经网络、深层神经网络 四、浅层神经网络1.双层神经网络表示2.双层神经网络的前向传播第一层前向传播第二层前…...

UI自动化概念 + Web自动化测试框架介绍
1.UI自动化测试概念:我们先明确什么是UI UI,即(User Interface简称UI用户界面)是系统和用户之间进行交互和信息交换的媒介 UI自动化测试: Web自动化测试和移动自动化测试都属于UI自动化测试,UI自动化测试就是借助自动化工具对程序UI层进行自动化的测试 …...

在 macOS 上的多个 PHP 版本之间切换
文章目录 前言一、前提条件1.引入库需要安装 Xcode 2.安装多个PHP版本2.PHP版本切换 开源替代品 前言 不同项目使用php版本可能不同,需要安装不同版本php 一、前提条件 1.引入库 需要安装 Xcode 命令行工具和Homebrew xcode-select --install检查brew是否已安…...

地址解析协议ARP
地址解析协议(Address Resolution Protocol,ARP),用于根据本网内目的主机或默认网关的IP地址获取其MAC地址。 ARP的基本思想:在每一台主机中设置专用内存区域,称为ARP高速缓存(也称为ARP表&…...

Go学习第十三章——Gin入门与路由
Go web框架——Gin入门与路由 1 Gin框架介绍1.1 基础介绍1.2 安装Gin1.3 快速使用 2 路由2.1 基本路由GET请求POST请求 2.2 路由参数2.3 路由分组基本分组带中间件的分组 2.4 重定向 1 Gin框架介绍 github链接:https://github.com/gin-gonic/gin 中文文档…...

[减脂期食谱] 自制千岛酱
[减脂期食谱] 自制千岛酱 成品如下: 最中间的那个,算比较居中的颜色吧,其实自己家做原版的千岛酱还是比较简单的,它的底就是蛋黄酱(蛋黄油乳化的酱),随后里面的材料比较自由,维基百科是这么介绍的…...

Android 系统架构
目录 Android 系统架构 1. Android 应用层 2. Android应用框架层 2.1 Activity Manager (活动管理器) 2.2 Window Manager (窗口管理器) 2.3 Content Provider (内容提供器) 2.4 View System(视图系统&a…...

【Docker】Python Flask + Redis 练习
一、构建flask镜像 1.准备文件 创建app.py,内容如下 from flask import Flask from redis import Redis app Flask(__name__) redis Redis(hostos.environ.get(REDIS_HOST,127.0.0.1),port6379)app.route(/) def hello():redis.incr(hits)return f"Hello Container W…...

shell_52.Linux测试与其他网络主机的连通性脚本
实战演练 本节将展示一个实用脚本,该脚本在处理用户输入的同时,使用 ping 命令或 ping6 命令来测试与其他网络主机的连通性。 ping 命令或 ping6 命令可以快速测试网络主机是否可用。这个命令很有用,经常作为首选工具。如果只是检查单个主机&…...

OpenCV C++ 图像处理实战 ——《缺陷检测》
OpenCV C++ 图像处理实战 ——《缺陷检测》 一、结果演示二、缺陷检测算法2.1、多元模板图像2.2、训练差异模型三、图像配准3.1 功能源码3.1 功能效果四、多元模板图像4.1 功能源码五、缺陷检测5.1 功能源码六、源码测试图像下载总结一、结果演示...

Python操作MySQL基础使用
Python操作MySQL基础使用 链接数据库并查询数据 import pymysql# 链接数据库 conn pymysql.connect(host10.5.6.250,port3306,userroot,password******** )# 查看MySQL版本信息 print(conn.get_server_info()) # 5.5.27# 获取到游标对象 cursor conn.cursor()# 选择数据库…...

【pytorch】pytorch中的高级索引
这里只介绍pytorch的高级索引,是一些奇怪的切片索引 基本版 a[[0, 2], [1, 2]] 等价 a[0, 1] 和 a[2, 2],相当于索引张量的第一行的第二列和第三行的第三列元素; a[[1, 0, 2], [0]] 等价 a[1, 0] 和 a[0, 0] 和 a[2, 0],相当于索…...

基于图像识别的自动驾驶汽车障碍物检测与避障算法研究
基于图像识别的自动驾驶汽车障碍物检测与避障算法研究是一个涉及计算机视觉、机器学习、人工智能和自动控制等多个领域的复杂问题。以下是对这个问题的研究内容和方向的一些概述。 障碍物检测 障碍物检测是自动驾驶汽车避障算法的核心部分,它需要从车辆的感知数据…...

Spring boot定时任务
目录 前言一、使用 Scheduled 注解二、使用 ScheduledExecutorService三、使用 Spring 的 TaskScheduler四、使用第三方调度框架 前言 在 Spring Boot 中,有多种方法来编写定时任务,以执行周期性或延迟执行的任务。下面是几种常见的方式 一、使用 Sche…...

Glide原理
本文基于Carson整理 1.简介 相比其他几种图片加载框架,Glide性能最好。这得益于其高效的图片缓存策略 其还有多样化的媒体格式加载:如GIF、Video,对于商城首页需展示丰富样式、信息的页面需求来说,也是必不可少的。 2.加载原理…...

wps表格按分隔符拆分单元格
有数据如下;看选中区域,一个单元格中有一个v,空格,然后有三个数值,以空格分开;点击菜单中的数据-分列; 弹出分列向导;选择 分隔符号; 选择分隔符为空格;出现预…...

【SEC 学习】Vim 的基本使用
一、Vim 编辑器安装 yum install -y vim二、Vim 三种模式 命令模式 编辑模式 末行模式 三、三种模式之间的转换 1. 命令模式 -> 编辑模式 快捷键含义i从光标处插入I从光标所在行首插入a从光标后插入A从光标所在行末插入o从光标下一行插入O从光标上一行插入 2. 命令模式 …...

Linux中shell脚本练习
目录 1.猜数字 2.批量创建用户 3.监控网卡Receive Transmit 数据的变化 4.部署Linux 5.系统性能检测脚本 6.分区脚本 7.数据库脚本 1.猜数字 随机数的生成 使用环境变量RANDOM,范围是0~32767 编写guest.sh,实现以下功能࿱…...

AS/400简介
AS400 AS400 简介AS/400操作系统演示 AS400 简介 在 AS400 中,AS代表“应用系统”。它是多用户、多任务和非常安全的系统,因此用于需要同时存储和处理敏感数据的行业。它最适合中级行业,因此用于制药行业、银行、商场、医院管理、制造业、分销…...

FreeRTOS 中断管理介绍和实操
目录 中断定义 中断优先级 相关注意 中断相关函数 1.队列 2.信号量 3.事件标志组 4.任务通知 5.软件定时器 中断管理实操 中断定义 中断是指在程序执行的过程中,突然发生了某种事件,需要立即停止当前正在执行的程序,并转而处理这个…...

性能测试 —— Jmeter 常用三种定时器!
1、同步定时器 位置:HTTP请求->定时器->Synchronizing Timer 当需要进行大量用户的并发测试时,为了让用户能真正的同时执行,添加同步定时器,用户阻塞线程,知道线程数达到预先配置的数值,才开始执行…...

ROS自学笔记十七:Arbotix
ArbotiX 是一个基于 ROS(Robot Operating System)的机器人控制系统,它旨在为小型机器人提供硬件控制和传感器接口,以便于机器人的运动和感知。以下是有关 ROS 中 ArbotiX 的简介和安装步骤: ArbotiX 简介 ArbotiX 主…...