ICSC2020 工业信息安全技能大赛WriteUp

哈尔滨站

Omron Fins

omron fins通信协议:https://wenku.baidu.com/view/fca336f6e43a580216fc700abb68a98270feac67.html

寻找关键输入段

图片[1]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

写入的内存区域 Data 类型为Word contents,所以根据协议进行反推即可

Word contents的格式为:每个数据单元为2字节:第一字节:高8位,第二字节:低8位

所以flag为flag{qabd2twp970mdikt38}

湖州站

MMS协议分析

这题ctfhub下载不了,绝了

工控协议数据分析

wireshark打开,分析S7COMM流量,之前的之江杯wp写过了,不再多说原理,

图片[2]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

他在ROSCTR:[Ack_Data]的包有数据,点开最后面的data后是一段二进制,

挨个提取并按照顺序拼接,转换ascii,即可获得flag

01100110
01101100
01100001
01100111
01111011
01100110
01101100
01100001
01100111
01011111
01101001
01110011
01011111
01101000
01100101
01110010
01100101
01111101
图片[3]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

加密后的企业数据

下载后是个zip,无法打开,直接010打开,发现猫腻

图片[4]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

虽然文件头是pk,但其实上它满足的条件是Rar文件格式的头,

替换一下

图片[5]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

修复后正常打开

发现描述内容

import random
import hashlib
a=""
password=a.join(str(random.choice(range(10))) for _ in range(10))
md5=str(hashlib.md5(password.encode(encoding='GB18030')).hexdigest())
print(md5[0:-10])

输出:
747fa0eb44e6ed5a349497

编写揭秘脚本

import hashlib

for i in range(0,9999999):
    password = str(i).rjust(7,'0')
    if "747fa0eb44e6ed5a349497" in hashlib.md5(password.encode(encoding='GB18030')).hexdigest():
        print(password)
图片[6]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

成功获得密钥,进行机密,获得文本,观察列数猜测零宽隐写

图片[7]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

写个脚本解密即可

图片[8]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

(这tm是杂项把)

济南站 

IoT

RISC-V逆向,可以看出来是两个数据xor,写脚本就行了

cyt = [
    249, 149, 286, 132,  67,
    286, 328, 390, 356, 264,
    345, 222, 191, 120, 483,
    200, 340, 507, 158, 260
]

xor = [
    159, 249, 383, 227,  56,
    326, 295, 468, 315, 321,
    364, 129, 236,  72, 444,
    141, 309, 392, 231, 377
]

flag = ''
for i in range(len(xor)):
    flag += chr(xor[i]^cyt[i])
print(flag)

被篡改的数据

题目说是寻找写入的数据,寻找一下关键字做了写入的关键字

图片[9]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

s7comm.param.func ==0x05

同时PDU为job的可能是写入数据,此处审计流量

找到关键信息

图片[10]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇
图片[11]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇
图片[12]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇
图片[13]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

挨个取就完事了

工业物联网智能网关数据分析

题目说是物联网,结合流量包大量的mqtt协议,那么理所当然的直接分析mqtt就可以了

逐条分析,发现部分协议存在大量data

图片[14]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

在后缀是d的message发现奇怪的东西

图片[15]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

暂时没啥用,猜测是某个zip的压缩包,继续分析

追踪f后缀的时候,发现504b明显压缩包开头,猜测可以提取一个zip

图片[16]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

导入hxd发现数据不够组成zip,既然首位是f,同时后缀还有lag这种,并且其均为16进制,那么有可能是按照顺序拼接,才能构筑完整的压缩包

图片[17]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

成功导出,那么猜测最开始获得的pass_1s_ea4y就是密钥,成功解密

图片[18]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

获得图片一个,暂时不知道啥用,所以直接猜测png高度

图片[19]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇
图片[20]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

获得图片,只是一部分的flag,猜测另一半需要通过其他方案进行解决。

遇事不决stegsolver

图片[21]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

red,blue,green0通道可能有隐写,直接一把梭

图片[22]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

获得熟悉的PNG结构,导出

图片[23]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

拼接,扫码。获得后半段

flag{21png_LSB_is_easy}

ddddynamic

mipsel逆向,ghidra打开看反汇编

图片[24]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇
图片[25]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

触发solve,跟进一下

图片[26]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

继续跟一下dfs函数

图片[27]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

由于RE能力有限,这里用别人的代码重构了MO1N战队师傅的代码重构了

#include <stdio.h>
#include <string.h>
int dp[10050];
int arr[10050], ans[15];
int n;

int max(int a, int b) {
    if (a >= b) {
        return a;
    } else {
        return b;
    }
}

int solve() {
    for (int i = 1; i <= n; i++) {
        arr[i] = rand() % 11;
        dp[i] = 1;
    }
    int maxx = 0;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j < i; j++) {
            if (arr[j] <= arr[i]) {
                dp[i] = max(dp[i], dp[j] + 1);
            }
        }
        maxx = max(maxx, dp[i]);
    }
    return maxx % 256 + 34;
}

int main() {
    srand(0x666c6167);
    n = 10000;
    for (int i = 1; i <= 10; i++) {
        ans[i] = solve();
        printf("%d ", ans[i]);
    }
    printf("\n");
    char output[18];
    output[0] = 'f';
    output[1] = 'l';
    output[2] = 'a';
    output[3] = 'g';
    output[4] = '{';
    for (int i = 5; i < 5 + 10; i++) {
        output[i] = ans[i - 4];
    }
    output[15] = '}';
    output[16] = '\x00';
    printf("%s", output);
    return 0;
}

COTP

图片[28]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

直接追踪流分析即可

图片[29]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇
图片[30]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

根据题目取后hex即可

flag{31312D31424535312D30584230203B56332E308240001505323B32383882410003000300A20000000072010000}

工控大楼的道闸怎么坏了

文件无法打开,猜测是无线协议,导入audacity进入分析,radio hacker也可以。

图片[31]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

此处考点为ev1527方法,根据文档分析即可

https://max.book118.com/html/2017/0703/119973586.shtm

图片[32]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

一帧信号的编码格式为 =>8位同步码 + 20位内码 + 4位数据码

  • 0码, 对应1个高电平+3个低电平
  • 1码, 对应3个高电平+1个低电平
  • 同步码, 对应1个高电平+31个低电平

同步码:10000000000000000000000000000000,0码=1000,1码为1110

图片[33]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

具体表现就是长宽的是1,短的是0,按此替换为

101010110010110010000001

文件名为叫做iiiiicccccssssshhhhheeeeexxxxx,那就icshex编码即可

图片[34]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

flag{ab2c81}

泄露的信号

导入audacity

图片[35]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

查看频谱就完了

flag{1cbnz723x81il1812ss2}

司机的身份

下载压缩包,获得文件名为T808,百度搜索一波找到了相关协议,进行流量分析

7e为报文开头,按照这个顺序继续分析即可

图片[36]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇
图片[37]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

找到相应的流量位置,根据上图进行分析找到驾驶员姓名段

这里有点端倪,姓名过长导致得从后往前推,所以推出姓名报文为十六进制

8af896b850e7964d543d8af89640646996b850e77f3d85a9985876a4802876a4773e52ab963f621176a46167963f4ea676a4621154c6515c964d56a47957610d76a48fe695cd773e76a496404ea6805e5ba354a48fe652ab85a956c9610d805e980876a4585e8fe676a48ae64ea652ab4ea676a495cd985876a454a44fee95cd85a956a45ba376a4621183e983e976a48fe6805e8ae65a464ea6805e76a4963f85a96240985859827a7a5982598256d176a456d1

然而用T808的模拟终端工具可直接弄出来,但是我没找到工具,只好手动分析

十六进制进行转换

图片[38]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

新佛经,搞就完了

图片[39]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

base64,base32就完事了,麻了

flag{Crypy01sFuN}

奇怪的声音

下载附件,图片一张,直接binwalk

图片[40]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

获得音频,直接SSTV,就完事了

图片[41]-ICSC2020 工业信息安全技能大赛WriteUp-魔法少女雪殇

flag{no32dpi3194dof2}

石家庄站

奇怪的声音

下载后音频文件,音频倒放+摩斯电码解密就完了

….- …– …. -…. …– -.- -.. ..— —.. ….. — ..—

flag{43h63kd285m2}

© 版权声明
THE END
喜欢就支持一下吧
点赞1 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情