哈尔滨站
Omron Fins
omron fins通信协议:https://wenku.baidu.com/view/fca336f6e43a580216fc700abb68a98270feac67.html
寻找关键输入段
写入的内存区域 Data 类型为Word contents,所以根据协议进行反推即可
Word contents的格式为:每个数据单元为2字节:第一字节:高8位,第二字节:低8位
所以flag为flag{qabd2twp970mdikt38}
湖州站
MMS协议分析
这题ctfhub下载不了,绝了
工控协议数据分析
wireshark打开,分析S7COMM流量,之前的之江杯wp写过了,不再多说原理,
他在ROSCTR:[Ack_Data]的包有数据,点开最后面的data后是一段二进制,
挨个提取并按照顺序拼接,转换ascii,即可获得flag
01100110
01101100
01100001
01100111
01111011
01100110
01101100
01100001
01100111
01011111
01101001
01110011
01011111
01101000
01100101
01110010
01100101
01111101
加密后的企业数据
下载后是个zip,无法打开,直接010打开,发现猫腻
虽然文件头是pk,但其实上它满足的条件是Rar文件格式的头,
替换一下
修复后正常打开
发现描述内容
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)
成功获得密钥,进行机密,获得文本,观察列数猜测零宽隐写
写个脚本解密即可
(这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)
被篡改的数据
题目说是寻找写入的数据,寻找一下关键字做了写入的关键字
s7comm.param.func ==0x05
同时PDU为job的可能是写入数据,此处审计流量
找到关键信息
挨个取就完事了
工业物联网智能网关数据分析
题目说是物联网,结合流量包大量的mqtt协议,那么理所当然的直接分析mqtt就可以了
逐条分析,发现部分协议存在大量data
在后缀是d的message发现奇怪的东西
暂时没啥用,猜测是某个zip的压缩包,继续分析
追踪f后缀的时候,发现504b明显压缩包开头,猜测可以提取一个zip
导入hxd发现数据不够组成zip,既然首位是f,同时后缀还有lag这种,并且其均为16进制,那么有可能是按照顺序拼接,才能构筑完整的压缩包
成功导出,那么猜测最开始获得的pass_1s_ea4y就是密钥,成功解密
获得图片一个,暂时不知道啥用,所以直接猜测png高度
获得图片,只是一部分的flag,猜测另一半需要通过其他方案进行解决。
遇事不决stegsolver
red,blue,green0通道可能有隐写,直接一把梭
获得熟悉的PNG结构,导出
拼接,扫码。获得后半段
flag{21png_LSB_is_easy}
ddddynamic
mipsel逆向,ghidra打开看反汇编
触发solve,跟进一下
继续跟一下dfs函数
由于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
直接追踪流分析即可
根据题目取后hex即可
flag{31312D31424535312D30584230203B56332E308240001505323B32383882410003000300A20000000072010000}
工控大楼的道闸怎么坏了
文件无法打开,猜测是无线协议,导入audacity进入分析,radio hacker也可以。
此处考点为ev1527方法,根据文档分析即可
https://max.book118.com/html/2017/0703/119973586.shtm
一帧信号的编码格式为 =>8位同步码 + 20位内码 + 4位数据码
- 0码, 对应1个高电平+3个低电平
- 1码, 对应3个高电平+1个低电平
- 同步码, 对应1个高电平+31个低电平
同步码:10000000000000000000000000000000,0码=1000,1码为1110
具体表现就是长宽的是1,短的是0,按此替换为
101010110010110010000001
文件名为叫做iiiiicccccssssshhhhheeeeexxxxx,那就icshex编码即可
flag{ab2c81}
泄露的信号
导入audacity
查看频谱就完了
flag{1cbnz723x81il1812ss2}
司机的身份
下载压缩包,获得文件名为T808,百度搜索一波找到了相关协议,进行流量分析
7e为报文开头,按照这个顺序继续分析即可
找到相应的流量位置,根据上图进行分析找到驾驶员姓名段
这里有点端倪,姓名过长导致得从后往前推,所以推出姓名报文为十六进制
8af896b850e7964d543d8af89640646996b850e77f3d85a9985876a4802876a4773e52ab963f621176a46167963f4ea676a4621154c6515c964d56a47957610d76a48fe695cd773e76a496404ea6805e5ba354a48fe652ab85a956c9610d805e980876a4585e8fe676a48ae64ea652ab4ea676a495cd985876a454a44fee95cd85a956a45ba376a4621183e983e976a48fe6805e8ae65a464ea6805e76a4963f85a96240985859827a7a5982598256d176a456d1
然而用T808的模拟终端工具可直接弄出来,但是我没找到工具,只好手动分析
十六进制进行转换
新佛经,搞就完了
base64,base32就完事了,麻了
flag{Crypy01sFuN}
奇怪的声音
下载附件,图片一张,直接binwalk
获得音频,直接SSTV,就完事了
flag{no32dpi3194dof2}
石家庄站
奇怪的声音
下载后音频文件,音频倒放+摩斯电码解密就完了
….- …– …. -…. …– -.- -.. ..— —.. ….. — ..—
flag{43h63kd285m2}