工业信息安全技能大赛2021 相关知识。工控学习。

济南站

第6题

6.题目: Modbus流量包
内容: 在工控网络通信中,工作人员截取了一段奇怪的Modbus流量,请分析该流量包中隐藏的数据。答案格式:flag{****************} flag格式:flag{}。

过滤 modbus && ip.dst == 192.168.111.138, 将4位 data提取出来,例 0089。保留89。
提取所有的。组合解析hex得到flag png。

8.题目: 勒索

过滤s7comm
有个2个关键包,其中1个是

26	2.103355		192.168.4.36	S7COMM	91	ROSCTR:[Userdata] Function:[Request] -> [Security] -> [PLC password]
29	2.133143		192.168.4.222	S7COMM	87	ROSCTR:[Userdata] Function:[Response] -> [Security] -> [PLC password]

9.题目: 摩的巴士

modbus包过滤。提取data中的后2位。分请求包和响应包。取一种就行。

flag{nononononononononono_this_is_key}

4.题目: 恶意文档

wireshark打开监听一下。启动docm文件启用宏。
ip:11.4.5.14
port:1919

梯形图学习

M0.1是常闭。
M0.0| |是常开。是M0.0( )的触点。M0.0( )接通后M0.0| |转为常闭。
T37时间继电器 100ms是基数。50*100ms=5000ms即延时5s后动作。

流程。CPU接入信号。通过M0.1 => M0.0( ) 后, M0.0 | | 触点闭合。。。5秒后T37闭合。

mips

/* sub_100234(unsigned int*, unsigned int*, unsigned int*) */
void sub_100234(uint *param_1,uint *param_2,uint *param_3)

{
  uint local_24;
  uint local_20;
  int local_1c;
  int local_18;
  
  local_24 = *param_1;
  local_20 = *param_2;
  local_1c = 0;
  for (local_18 = 0; local_18 < 0x40; local_18 = local_18 + 1) {
    local_1c = local_1c + 0x458bcd42;
    local_24 = local_24 +
               (local_20 * 0x40 + *param_3 ^ local_20 + local_1c + 0xb ^
                (local_20 >> 9) + param_3[1] ^ 0x20);
    local_20 = local_20 +
               (local_24 * 0x40 + param_3[2] ^ local_24 + local_1c + 0x14 ^
                (local_24 >> 9) + param_3[3] ^ 0x10);
  }
  *param_1 = local_24;
  *param_2 = local_20;
  return;
}

/* sub_101(char*, int) */
void encrypt_sub_101(char *param_1,int param_2)

{
  byte bVar1;
  uint __seed;
  int iVar2;
  int local_24;
  
  __seed = time((time_t *)0x0); // 当前时间为随机种子
  srand(__seed);
  for (i = 0; i < param_2; i = i + 1) {
    bVar1 = param_1[i];
    iVar2 = rand();
    param_1[i] = bVar1 ^ (byte)iVar2;  // 用随机值异或
  }
  return;
}
/* sub_100753430(char*, int, unsigned int*) */

void sub_100753430(char *param_1,int size,uint *param_3)

{
  uint j;
  uint *cur;
  
  cur = (uint *)param_1;
  for (j = size; (cur < param_1 + size && (7 < j)); j = j - 8
      ) {
    sub_100234(cur,cur + 1,param_3);
    cur = cur + 2;
  }
  return;
}

// main
// sub_100753430(in_stack_00000040,iStack0000000000000030,puStack0000000000000028);


收集 Wp

题目:小刘在学习工控逆向分析的过程中遇到了一个难以调试GUI程序,你能帮助他调试吗?flag格式为:flag{}。

Writeup:
检测工具:
步骤:
1、内嵌了一个 dll,找到 DLL 中 TestFunction 函数解密即可。

2、

得到加密信息:
M1-Z3SPK5SF5SP
3、

有趣的流水线

题目:某生产线老师傅在对小刘讲解流水线作业流程中,对小刘进行询问:当灌装贴签流水线启动手动模式时,分别按下启动按钮可以启动不同的电机;因M4电机为多段速电机,当M4电机按了3次时,当前流水线运行速度发生改变。请您帮助小刘进行计算当前流水线的运行实例(详细赛题实例请下载进行查看)。flag格式为:flag{}。
考核内容:
梯形图

选择不同的电机,分别按下一次启动按钮,其中M4电机不小心按了3下,依次按照顺序描述灌装机,压盖机,贴标机,第二级传输带的运行过程。
题目是基于PLC的灌装贴标签系统其中的手动调试模式,过程代号如下:
启动:R 停止😛 高速:I 低速:V 多段速:K(1,2,3,4,5)
时间:1,2,3,4,5(单位S) 循环:X
指示灯:H1,H2 闪烁:L 亮:T 灭:F

Writeup:
1.附件种的电气原理和接线文档打开是乱码
如下:

2.通过复制到百度搜索AC1021和AC1027可以探查知是CAD文件

3.可以修改后缀为.dwg文件,然后使用CAD软件打开图片,再转成PDF版分析,得出PLC接线图和电气原理图如下图:

PLC接线图

电气原理图

通过实物图中得知
M1是灌装机,M2是压盖机,M3是贴标机,M4是第二级传输带
题目种只让描述每个电机按下启动按钮以后的运行过程,看到例子描述,可以得知生成的字符串是:
“电机启动运行时间停止-指示灯运行状态时间灭掉--第二台电机运动-指示灯状态--第三台电机运动-指示灯状态--第四台电机运动指示灯状态”

启动:R 停止😛 高速:I 低速:V 多段速:K(1,2,3,4,5)
时间:1,2,3,4,5(单位S) 循环:X
指示灯:H1,H2 闪烁:L 亮:T 灭:F
Q4.4指示灯H1
Q4.5指示灯H2
例如:按下启动按钮,第二级传输带启动三秒以后自动停止,灯闪烁5秒灭掉,
按下启动按钮,第一级传输带启动,灯常亮
生成一串字母:M4R3SP-H3L5SF--M5R-H4T

通过打开程序梯形图.pdf,然后进行分析,
调试程序段一
其实就是VB120接收任0,1,2,3,4,5然后有一个上升沿P,上升沿就是每次在0到1(也可以说是断开到接通)的时候触发一次,然后把VB120的值传给VB0
调试程序段二
有个SB1,在工业中一般指按钮,并且程序中是常开状态,按下之后常开变闭合状态,一般作为点动启动按钮,点动接通线路;常闭状态一般作为停止按钮,点下之后,由常闭变断开状态,一般作为停止按钮或者急停按钮。
那么在此段程序中SB1作为启动按钮,有个VB0==1,在第一段程序中VB120把值传给VB0,并且尾部有个提示灌装机调试完成,可以证明此段VB0=1对应灌装机M1。
由此,可以推断程序段一中的1,2,3,4,5分别对应点击M1,M2,M3,M4,M5,每次VB120传送不同的值给VB0代表选择不同的电机,然后触发不同的程序段。

通过分析程序段二:
在选择灌装机时,程序段一中VB120传送给VB0=1,程序二中VB0=1闭合,T96时间继电器常闭触点,在按下启动按钮SB1,然后松开按钮,内寄存器V400.0一瞬间得电,V400.0常开触点得电闭合,然后形成自锁通路,时间继电器T47开始延时,同时Q1.3PLC输出点得电,40*100ms/1000=4s,4秒延时之后T47时间继电器得电,常闭触点T47断开,Q1.3断电,从而Q1.3输出4秒。
后面一个N表示下降沿,在每次从得电到失电会触发一次(也可以说从1到0),本题中当v400.0内寄存器断路,触发下降沿N,复位V0.0和置位V420.0,代表手动调试完成,在本题中与电机和指示灯无关,不做深入。
通过此段程序段分析得出:
按下启动按钮,形成自锁通路,Q1.3得电输出,T47时间继电器延时,4秒以后T47时间继电器得电,T47常闭触点断开,Q1.3也失电断开。
然后Q1.3对应的输出去PLC接线图里面找,找到Q1.3对应KA1继电器线圈,再从电气原理图里面得到KA1常开触点连接接触器KM1线圈,KM1三相触点连接M1灌装电机,然后就可以得知,当Q1.3PLC输出点接通,KA1线圈得电,KA1常开触点闭合,接通接触器KM1线圈,导致KM1常开触电闭合,接通M1灌装机,导致灌装机得电运行。

整理结果就是:M1得电启动运行4秒,断电停止。对应M1R4SP

调试程序段三:
在程序段二中,按下启动按钮,形成自锁,V400.0内寄存器一直得电,则V400.0常开触电闭合,在程序段三中有SB2常闭和T96常闭触点,V400.1内寄存器得电,V400.1常开触点闭合,也形成自锁,T96时间继电器开始延时,4秒以后,T96时间继电器得电,T96常闭触点断开,程序段三自锁断路,V400.1失电,同时程序段二中的T96常闭触点也断开,导致V400.0寄存器失电,V400.0常开触点失电断开,则程序段二自锁断路。
指示灯程序段一:
分析出VB0=1时,按下启动按钮,V400.0内寄存器得电,使得V400.1同时得电,T96延时4秒,同时断开V400.0和V400.1自锁通路
通过指示灯程序段一,V400.0内寄存器得电4秒,V400.0常开触点闭合4秒,clock_1S代表周期为1秒,通过图中符号地址查看为SM0.5,在梯形图中,代表周期为1秒的断开闭合各0.5秒的循环,Q4.4为提示中H1,在V400.0常开触点闭合4秒断开,则H1指示灯闪烁4秒灭掉。
则整理结果为:H1L4SF

调试程序段四:
电机选择M2,VB120把值传送给VB0==2,通过按下启动按钮SB1,V400.2内寄存器得电,形成自锁通路,T49开始延时,0-6秒Q1.5得电接通,6-14秒Q1.4得电接通,Q1.5断电,14秒后,Q1.4断电,V400.2内寄存器断电。
通过查看电气原理图和PLC接线图得知,Q1.5PLC输出点位对应继电器线圈KA3,
在电气原理图中KA3常开触点连接KM3和KM4线圈,通过原理图中的电机接线方式,得知当Q1.5得电,KA1闭合导致KM3和KM4线圈得电,KM3和KM4主触点闭合,M2电机低速启动;
Q1.4PLC输出点对应继电器线圈KA2,在电气原理图中KA2常开触点连接KM2线圈,通过原理图中的电机接线方式,当Q1.4PLC输出点得电,KA2线圈得电导致KA2常开触点闭合,KM2线圈得电,从而使得KM2主触点接通M2电机,M2电机高速启动。
总结结果:按下启动按钮,M2电机启动低速运行6秒,高速运行8秒,然后停止。
得出:M2RV6SI8SP

指示灯程序段一:
通过分析,VB0=2,V400.2得电14秒,则H1亮14秒
则:H1T14SF

调试程序段五:
电机选择M3,VB120把值传送给VB0==3,按下启动按钮,V400.4内寄存器得电,形成自锁,T51时间继电器开始延时,0-3秒,Q1.6接通,3-5秒断开,通过接线图和原理图可以得知Q1.6连接KA4线圈,KA4常开触点连接KM5线圈,则KM5主触点连接M3电机。
则5秒过后,T51常闭触点断开,T51时间继电器重新恢复初始,T51常闭触点断开再闭合,T51时间继电器重新记时,0-3秒,Q1.6接通,3-5秒断开,形成循环。
整理结果得:M3R3SP2SX

指示灯程序段二:
通过VB0==3,V400.4接通从未断开,Q4.5一直接通,则得出:H2T

调试程序段六:
电机选择M4,VB120把值传送给VB04,按下启动按钮SB1,V400.3内寄存器得电,形成自锁通路,SB1启动按钮按下一次,触发上升沿P,VB410把值传给VB410,
按下一次,VB410
1, Q1.0接通,按下两次,VB4102,Q1.1接通,按下启动按钮SB1三次,VB4103,T50开始延时,2秒以后T50时间继电器得电,T50常开触点闭合,Q1.0和Q1.1得电,按下4次,VB4104,Q1.2得电,按下5次(或者大于5次),VB4105,Q1.0和Q1.2得电。

通过电气原理图和PLC接线图得知,Q1.0,Q1.1,Q1.2,连接变频器DIN5,DIN6,DIN7,属于变频器多段速连接接线,并且变频器做了速度参数设置,Q1.0第一段速度,Q1.1第二段速度,Q1.0+Q1.1第三段速度,Q1.2第四段速度,Q1.0+Q1.2第五段速度。

所以得出结果:按下启动按钮,连续按下三次,则:M4RK1K22SK3

指示灯程序段二:
通过VB0==4,V400.3接通从未断开,clock_1s,闪烁0.5秒间隔,Q4.5一直接通,则:H2L
进而得到flag。

有趣的流水线2

题目:小刘经过努力终于完成了罐装贴标签流水线运行。老师傅又给小刘一套自动模式程序,让小刘描述出其中的运行过程。你能帮助小刘吗?(详细赛题实例请下载进行查看)。flag为接触的字符前20位和后21位不包含"-"。flag格式为:flag{XX-XX-XX}。小刘在学习工控逆向分析的过程中遇到了一个难以调试GUI程序,你能帮助他调试吗?flag格式为:flag{}。

(可作为最后提示:1. Q1.0,Q1.1,Q1.2连接变频器,可以百度搜索变频器多段速,依照001-111排列的7段速度)

启动:R 停止😛 高速:I 低速:V 多段速:K(1,2,3,4,5,6,7)
时间:1,2,3,4,5(单位S) 向左:L 向右:T(只有传送带运行分左右)
SQ5是A点的传感器
SQ6是B点的传感器
SQ7是C点的传感器
SQ8是D点的传感器
Q5.0控制机器人抓取工件
此题默认温度达标
设定套数为1 第一级传送带速度为10mm/s
此题已经设置好第一级传输带(伺服电机)的驱动配置,程序中未显示配置信息,当触摸屏指示灯V6.3亮的时候,M5运行。

按下启动按钮,在A点陆续放下3个瓶子,依次描述出SQ5-SQ6-SQ7-SQ8传感器之间的电机自动模式运行过程

例子:在传感器SQ5处放置一个瓶子,第一级传送带向右运行5S,在SQ7第二级传送带以第一段速度向左运行贴标到SQ8停止
则:SQ5-M5TR5SP-SQ7-M4LRK1P-M3RP

最后的一串字母就为flag值,格式flag{}

WP:
当进料的传感器SQ5检测到第一级传输带上的A点有物料瓶时,工作模式按下启动按钮,V500.0形成自锁通路,导致V500.0常开触点闭合,当到达SQ5感应器,SQ5感应到信号,闭合通路,形成V500.1自锁通路,在交换区,V500.1对应第一级传送带(V6.3指示灯亮),第一级传送带运行,同时断开V500.0,上升沿把100的值传给位置给定VD370,第一级传送带速度10mm/s,位置100,运行10S停
SQ5-M5LR10SP

然后SQ6传感器检测到物料瓶,然后给出信号,SQ6常开触点闭合,V500.2接通自锁,同时断开V500.1。同时SR_Q02_1开始得电(V802对应Q1.3),灌装电机M1自动启动给物料瓶灌装材料,T101延时5秒后得电,T101常闭触点断开,M1灌装电机自动停止,灌装完毕。
SQ6-M1R5SP
灌装电机M1停止后,T101常开触点闭合,V500.3自锁通路,同时断开V500.2,(对应触摸屏V6.3指示灯亮)第一级传送带运动,触发上升沿,把40传给位置,然后第一级传送带速度10mm/s前进40mm以后,第一级传输带停止运行,相对位置SQ6为40mm,V500.4形成自锁通路,同时断开V500.3。
-M5LR4SP
T102开始延时,0-3秒,SR_Q00_1输出(对应V800,对应Q1.5,低速运行),此时压盖电机M2低速自动启动,3-6秒SR_Q01_1输出(对应V801,对应Q1.4,高速运行),压盖电机M2切换到高速运行3秒,压盖电机M2停止运行,同时VB520加1传给VB520(代表1个瓶子已经灌装压盖完成),此时6-10秒Q5.0输出,机械手将灌装压盖过后的物料瓶抓起放到一个特定的物料平台,用时4秒。
-M2V3SI3SP
第一个物料瓶被机器人抓取放置物料平台之后,Q5.0输出4秒断开,状态从1到0,触发下降沿,在第一级传输带A点放入第二个空物料瓶,也就是传感器SQ5感应的地方,SQ5感应瓶子闭合,因为VB520 =1<3,T102也已经完成一次延时,大于等于10秒,V500.1形成自锁通路,然后重复工作模式第一个物料瓶的动作,先灌装再压盖,然后进行放置到物料平台,等到三次之后,再次放入A点空物料瓶,VB520=3不符合VB520<3则第一级传输带不工作,相当于重复两次之前的灌装压盖动作.
则得出:
SQ5-M5LR10SP-SQ6-M1R5SP-M5LR4SP-M2V3SI3SP-SQ5-M5LR10SP-SQ6-M1R5SP-M5LR4SP-M2V3SI3SP
然后在程序段10中,因为VB520>=3 闭合,在程序段8中V500.4自锁通路,在完成压盖以后,在程序段10中,V500.4常开触点闭合,形成V500.5自锁通路,三个灌装贴标签好的物料瓶放好在物料平台之后,T103开始延时,温度检测,先检测贴标机的温度,用温度控制器和温度传感器Pt100来实现,通过温控器的表观测到温度超过30度,此题默认温度达标,上升沿把0值传给VB520,对VB520进行清零。重新计数。

默认温度达标,温度检测I0.5闭合,V500.6形成自锁通路,同时断开V500.5,ST_Q11.2得电输出(对应Q1.1输出,Q1.1为多段速第二段速度)(这里通过看电气图,变频器多段速接线),把40的值传送给第二级传输带速度VW4,第二级传输带M4电机开始运行,正转的频率为40Hz,
-M4LRK2P
三个物料瓶到达C点,SQ7(I0.7)传感器检测到物料瓶给出信号,V500.7形成自锁通路,ST_Q10_3输出(对应Q1.0输出,Q1.0为多段速第一段速度),把20的值给第二级传输带速度VW4,第二级传输带从40Hz降到20Hz运行.
SQ7-M4LRK1P
开始进入贴标区域,SR_Q03_1输出(对应Q1.6输出),贴标机M3开始自动启动进行贴标,当三个物料瓶贴标完毕后.
-M3RP
随着传输到达D点,然后传感器SQ8检测给出信号,SQ8闭合,此时V501.0形成自锁通路,ST_Q12_2和ST_Q11_3输出(对应Q1.1和Q1.2同时输出,多段速第三段速度)第二级传输带M4反转,以20Hz的速度回到C点
SQ8-M4TRK3P
C点SQ7传感器给出信号,V501.1形成自锁通路,ST_Q10_4输出,(对应Q1.0输出,第一段速)第二级传输带M4停止反转,以20Hz正转,SR_Q03_3输出(对应Q1.6输出)进行第二次贴标
SQ7-M4LRK1P-M3RP
再次到达D点后,V501.2形成自锁通路,同时断开V501.1,贴标机M3停止动作,物料瓶到达D点,SQ8传感器第二次给出信号,输出ST_Q10_5,ST_Q10_4,ST_Q10_3(对应Q1.0和Q1.1和Q1.2同时输出,多段速第七段速度)此时第二级传输带由正转20Hz转为10Hz继续运行,5秒过后,T104时间继电器得电,程序段16中T104常开触点闭合,V501.3形成自锁通路,同时断开V501.2,第二级传输带M4停止运行,上升沿触发一次,VB2加1传给VB2,物料瓶都完成自动装箱,满足设定套数1套,完成产量。
SQ8-M4LRK7P
最终结果得flag。

posted @ 2022-08-13 21:23  wgf4242  阅读(326)  评论(0编辑  收藏  举报