ciaoly
CRC code writeup

access_time
brush 327个字
whatshot 22 ℃

题目来源: 第七届全国工控系统信息安全攻防竞赛

CRCcode WriteUp

下载题目附件, 根据题目提示Modbus RTU, 查找该协议相关的数据帧格式资料. 据资料可知: (图源)

img

根据题目, 可以猜测本题解应当与CRC校验有关. 利用在线CRC计算工具, 手动尝试对附件中的Modbus RTU数据进行CRC校验, 附件中存在CRC校验不通过的数据.

image-20210904194918997

在控制台中编写Javascript脚本, 利用该Web工具依次对附件中的数据包进行CRC校验, 可得到校验正确的数据.

image-20210904195158195

将校验正确的数据复制并粘贴到Excel表格软件中, 利用Excel内置的"文本转换成表格工具(文本分列向导)" 将数据按照Modbus RTU协议帧的格式分开, 以便后续分析.

image-20210904195513752

利用Excel的筛选功能, 可以根据设备id/功能码等不同字段的数据包分别进行分析. 最终发现, 在向设备ID为1的设备执行写操作时, 其负载数据可以正常解码:

过滤数据包 解码负载数据
image-20210904195750811 image-20210904195824275

最终测试发现, 按照地址排序,提取出数据, 可得到flag

截屏2021-09-04 下午7.30.07截屏2021-09-04 下午7.30.42


最后附上在Chrome控制台中执行的Javascript代码:

const _chr = chr;
chr = () => {
    _chr();
    return document.querySelector("#s4").innerText;
}
let arr = ["010548fda4bb519e", "..............."]; // 粘贴附件里的数据包.
let out = [];
arr.forEach(ele => {
    document.querySelector("#input1").value = ele.substr(0, 12) ;
    out.push(chr().toLowerCase());
});
let i = 0;
// let _csv = "";
arr.forEach(ele => {
    if(ele.substr(12, 4) == out[i]) {
        console.log(ele);
        // _csv += `${ele.substr(0,2)},${ele.substr(2,2)},${ele.substr(4,4)},${ele.substr(8,4)},${ele.substr(12,4)}`;
    }
    i++;
});

#如无特别声明,该文章均为 ciaoly 原创,转载请遵循 署名-非商业性使用 4.0 国际(CC BY-NC 4.0) 协议,即转载请注明文章来源。
#最后编辑时间为: 2022 年 09 月 21 日


create 添加新评论


account_circle
email
language
textsms





关于 DreamCat

主题名称:DreamCat | 版本:X2.6.220211

主题开发:HanFengA7 | TeddyNight | Dev-Leo | CornWorld | WhiteBearcn | DFFZMXJ

Designed by HanFengA7 Power by Typecho

Copyright © 2015-2022 by LychApe All rights reserved!

加我的QQ
加我的微博
加我的支付宝
加我的微信