山东省“技能兴鲁”职业技能大赛—“铸网2025”山东省工业和互联网CTF竞赛WP
字数 1319 2025-09-23 19:27:38
山东省"技能兴鲁"职业技能大赛—"铸网2025"CTF竞赛技术解析
ICS工业控制系统安全
失窃的工艺
- 题目提供了一个test.PCZ文件,需要使用力控软件打开
- 解题方法:
- 将文件后缀名改为.zip
- 解压后直接搜索flag文本
- 找到的flag:
flag{D076-4D7E-92AC-A05ACB788292}
工控协议分析
- 使用Wireshark打开提供的流量文件进行分析
- 解题步骤:
- 追踪TCP流
- flag被逐字符隐藏在流量中
- 拼凑得到的flag:
flag{c93650241853da240f9760531a79cbcf}
Misc杂项
总线流量分析
- 题目场景:汽车在试验道路上行驶,测试人员监控车内CAN通信报文
- 已知条件:
- 报文抓取时间间隔为36秒
- 车速在80km/h左右
- 车速信息只占用1字节长度
- 车速信息具备较高优先级
- 解题步骤:
- 打开流量文件按ID分组观察
- 寻找只有1字节变化的CAN报文
- 发现ID=0x0000280的CAN报文数据符合条件(数据在0x50左右浮动)
- 编写脚本计算行驶路程
OTA流量分析
- 车机/IOT设备的OTA流程分析:
- 设备发起请求到服务器(如/api/v1/vehicle/handshake),带上设备信息
- 服务器生成会话密钥session_key,通过HTTPS或加密通道下发给设备
- 后续敏感数据(固件包、授权信息)会用session_key进行对称加密(常见AES-CBC/CTR)
- 设备用session_key解密得到明文,执行升级或获取控制指令
Easypicgame
- 使用010editor打开图片
- 直接搜索flag文本即可找到flag
Reverse逆向工程
简单的逆向分析
- 使用IDA分析二进制文件
- 加密逻辑非常简单:
- 直接将密文与0x5A进行异或操作即可解密
- 解题方法:
- 提取密文
- 逐字节异或0x5A
- 得到原始flag
Crypto密码学
EasyAES
- 题目加密流程:
- 先用3字符的k0对flag进行AES-CBC加密得到c0
- 然后用同样长度的k1对c0连续加密三次得到c3
- 密钥通过sha256从3字符明文生成
- 解题思路:
- 爆破k1段:
- 对c3做三次AES-CBC解密
- 每次解密后进行PKCS7补位校验
- 当三次解密都成功且补位合法时,说明k1正确,解密结果为c0
- 爆破k0段:
- 对c0做一次AES-CBC解密并校验PKCS7补位
- 验证解密结果是否符合flag的UUID格式
- 找到匹配的k0即可得到最终flag
- 爆破k1段:
- 优化思路:
- 利用多进程或批量处理加速暴力搜索
- 使用PKCS7补位校验和UUID格式校验作为快速剪枝条件
技术要点总结
-
工业控制系统文件分析:
- 了解常见工业控制软件文件格式
- 尝试修改扩展名解压分析
-
CAN总线协议分析:
- 理解CAN报文结构
- 识别关键数据字段
- 掌握车速信息编码方式
-
OTA安全分析:
- 理解OTA完整流程
- 掌握会话密钥交换机制
- 熟悉AES-CBC/CTR加密模式
-
逆向工程基础:
- 使用IDA进行静态分析
- 识别简单加密算法
- 实现解密脚本
-
AES加密分析:
- 理解AES-CBC模式
- 掌握PKCS7填充标准
- 实现多轮加密的逆向破解
- 优化暴力破解方法