CTF题库>水果 {flag就隐藏在这些鲜艳的水果中,仔细找就能找到}

这是一篇关于CTF挑战的博客,作者通过使用工具StegSolve在一张图片中发现了一串隐藏的二维码,该二维码转换为十进制数字后进一步解码为摩斯密码。解密后的信息是'CTF{LSB_BSL}',但提交时需注意字母全部转为小写,即'CTF{lsb_bsl}'。

key格式:CTF{xxx}

打开图片

 

又要用到我们的工具  StegSolve 打开  并且切换到  blue plan 0

发现是一张二维码  扫描获得信息

发现是一串数字(应该是十进制的数字)

45 46 45 46 32 45 32 46 46 45 46 32 46 45 46 46 32 46 46 46 32 45 46 46 46 32 46 46 45 45 46 45 32 45 46 46 46 32 46 46 46 32 46 45 46 46 32 

将他们转化为对应的ASCII码 得到

-.-. - ..-. .-.. ... -... ..--.- -... ... .-.. 

发现是摩斯密码 

进行解密即可 

<think> 根据用户提供的引用和之前的对话历史,用户想知道在CTF竞赛中S7Comm协议相关的flag通常隐藏的位置。之前的回答提到Max AmQ本身不能直接获取flag,但可以通过分析异常值间接发现。现在用户需要更全面的常见隐藏位置总结。 结合引用中的实际CTF案例: 1. 引用[1]提到flag为异常数据包的data内容 2. 引用[2]显示flag可能隐藏在加密通信中(如TEA加密) 3. 引用[3]指出在STOP指令的数据包中提取flag 综合这些信息,S7Comm协议中flag的常见隐藏位置包括: ### 1. **协议功能码异常参数区** - **位置**:S7Comm头部后的参数块(Parameter block) - **典型场景**: - STOP/START指令的功能码(Function Code)字段 - 引用[3]案例:在STOP指令数据包中提取前后4字节作为flag - **检测方法**: ```python # 伪代码:提取STOP指令前后4字节 if s7comm.func == 0x29: # STOP PLC功能码 flag = packet[15:19] + packet[-4:] # 根据实际协议偏移调整 ``` ### 2. **用户数据区(Data Field)** - **位置**:协议数据单元(PDU)的data部分 - **隐藏方式**: - 明文flag:异常数据内容(如引用[1]) - 加密flag:需解密的数据块(如引用[2]的TEA加密) - **示例流程**: ```mermaid graph TD A[捕获异常数据包] --> B{检查Data字段} B -->|明文flag| C[直接提取] B -->|加密数据| D[结合其他包密钥] D --> E[解密得flag] ``` ### 3. **协议尾部附加数据** - **位置**:以太网帧尾部(eth.trailer/eth.fcs) - **引用[2]案例**:在eth.trailer中发现额外HEX数据 - **提取步骤**: 1. 在Wireshark中启用"Edit > Preferences > Protocols > Ethernet > "Assume packets have FCS"选项 2. 过滤异常包:`frame.check_status == Bad` 3. 检查Trailer字段的16进制值 ### 4. **错误诊断信息** - **位置**:S7Comm响应包的错误代码(Error Code)相关字段 - **模式**: - 非法参数触发的错误响应中嵌入flag(如之前Max AmQ=0的案例) - 引用[1]:上位机未报警时,异常停止的PLC可能返回带flag的诊断数据 ### 5. **通信建立阶段(Setup Communication)** - **隐藏点**: - Max AmQ等参数的异常组合 - PDU长度字段的溢出值 - **CTF技巧**:发送异常建立请求,从响应中提取flag ### 实战提取流程图 ```mermaid flowchart TB subgraph CTF解题步骤 S1[加载流量包] --> S2[过滤S7Comm协议] S2 --> S3{检查功能码} S3 -->|0x29 STOP| S4[提取数据区首尾4字节] S3 -->|0xF0 建立连接| S5[检查MaxAmQ等参数异常] S2 --> S6[检查帧尾部附加数据] S6 --> S7[转换HEX为ASCII] S2 --> S8[查加密数据] S8 --> S9[结合其他包密钥] S9 --> S10[TEA/AES解密] end ``` ### 注意事项 1. 工业协议CTF常考察**协议规范外的异常处理**(如非法值响应) 2. 多步骤关联:一个包的异常可能需要另一个包解密(如引用[2]用403包的base64作TEA密钥) 3. 常用工具链: - Wireshark过滤:`s7comm && tcp.stream eq <编号>` - 在线解码:CyberChef或CaptfEncoder - 端口探测:`nmap -p 37830 <目标IP>` ### 相关问题 1. 如何快速识别S7Comm流量包中的异常功能码? 2. 在无明文flag时,如何系统性地搜索加密flag? 3. 西门子PLC的哪些诊断响应可能包含flag? 4. 如何利用协议模糊测试(Fuzzing)获取CTF中的flag? 5. 工业协议CTF与传统Web CTF在解题思路上有何区别? [^1]: 生产车间某流水线运行异常... flag为异常数据包data内容 [^2]: 2021CTF工业信息安全技能大赛-异常的s7comm... FLAG Flag{3KJJEwWJ3FoiJlMn} [^3]: CTFHub S7协议恶意攻击分析 WP... 在数据包时1321发现了stop,把前四位和后四位拿出来得到flag </think>在CTF竞赛中,S7Comm协议相关的flag通常隐藏在协议的非标准或异常字段中。结合您提供的引用和实际案例,以下是常见的flag隐藏位置及提取方法: --- ### 一、常见flag隐藏位置 #### 1. **协议功能码异常参数区** - **位置**:S7Comm头部后的参数块(Parameter block) - **典型场景**: - `STOP/START`指令的功能码(Function Code `0x29`)[^3] - 引用案例:在STOP指令数据包中提取前后4字节作为flag - **检测方法**: ```python # 伪代码:提取STOP指令前后4字节 if s7comm.func == 0x29: # STOP PLC功能码 flag = packet[15:19] + packet[-4:] # 根据实际协议偏移调整 ``` #### 2. **用户数据区(Data Field)** - **位置**:协议数据单元(PDU)的data部分 - **隐藏方式**: - **明文flag**:异常数据内容(如引用[1]的"流水线异常"场景) - **加密flag**:需解密的16进制或Base64数据(如引用[2]的TEA加密) #### 3. **协议尾部附加数据** - **位置**:以太网帧尾部(`eth.trailer`或`eth.fcs`) - **引用[2]案例**:在`eth.trailer`中发现额外HEX值,提交后获取加密flag - **提取步骤**: 1. 在Wireshark中启用`Edit > Preferences > Protocols > Ethernet > Assume packets have FCS` 2. 过滤异常包:`frame.check_status == Bad` 3. 检查Trailer字段的16进制值 #### 4. **错误诊断信息** - **位置**:S7Comm响应包的错误代码(Error Code)相关字段 - **模式**: - 非法参数触发的错误响应中嵌入flag(如设置`Max AmQ=0`) - 引用[1]场景:设备异常停止时返回的诊断数据 #### 5. **通信建立阶段(Setup Communication)** - **隐藏点**: - `Max AmQ`等参数的异常组合(如`0x00`或`0xFF`) - `PDU Length`字段的溢出值 - **CTF技巧**:发送异常建立请求,从响应中提取flag --- ### 二、实战提取流程图 ```mermaid flowchart TB subgraph CTF解题步骤 S1[加载流量包] --> S2[过滤S7Comm协议] S2 --> S3{检查功能码} S3 -->|0x29 STOP| S4[提取数据区首尾4字节] S3 -->|0xF0 建立连接| S5[检查MaxAmQ等参数异常] S2 --> S6[检查帧尾部附加数据] S6 --> S7[转换HEX为ASCII] S2 --> S8[查加密数据] S8 --> S9[结合其他包密钥] S9 --> S10[TEA/AES解密] end ``` --- ### 三、典型案例解析 #### 案例1:STOP指令隐藏flag(引用[3]) 1. 过滤指令:`tcp.stream eq 0 && s7comm` 2. 定位到功能码`0x29`(STOP PLC)的数据包 3. 提取数据区前4字节+后4字节组合为flag #### 案例2:尾部数据+TEA解密(引用[2]) 1. 在包400发现`eth.trailer`附加HEX:`3A2B1C...` 2. 通过nc提交到目标服务器:`echo "3A2B1C..." | nc <IP> 37830` 3. 接收加密响应,用403包的Base64内容作为TEA密钥解密 4. 获得flag:`Flag{3KJJEwWJ3FoiJlMn}` #### 案例3:异常数据区(引用[1]) 1. 定位导致流水线异常的数据包 2. 直接提取`data`字段内容作为flag --- ### 四、工具与技巧 1. **Wireshark过滤器**: - 关键功能码:`s7comm.func == 0x29`(STOP)`s7comm.func == 0xF0`(建立连接) - 异常值:`s7comm.param.max_amq_caller < 1 or s7comm.param.max_amq_caller > 8` 2. **自动化脚本**: ```python from scapy.all import * packets = rdpcap('s7comm.pcap') for pkt in packets: if pkt.haslayer(S7Comm): if pkt[S7Comm].func == 0x29: # STOP指令 data = bytes(pkt[S7Comm].payload) flag = data[:4] + data[-4:] # 组合flag ``` 3. **解密工具链**: - TEA解密:CaptfEncoder或Python `pycryptodome` - Base64/HEX转换:CyberChef在线工具 --- ### 五、注意事项 1. **工业协议特性**: - 避免对真实PLC发送异常指令(可能导致设备停机) - 合法通信中flag只存在于异常场景 2. **多步骤关联**: - 密钥可能分散在不同数据包(如引用[2]中403包含TEA密钥) - 需组合网络探测(`nmap -p 37830`)和流量分析 --- ### 相关问题 1. 如何快速识别S7Comm流量包中的异常功能码? 2. 在无明文flag时,如何系统性地搜索加密flag? 3. 西门子PLC的哪些诊断响应可能包含flag? 4. 如何利用协议模糊测试(Fuzzing)获取CTF中的flag? 5. 工业协议CTF与传统Web CTF在解题思路上有何区别? [^1]: 生产车间某流水线运行异常... flag为异常数据包data内容 [^2]: 2021CTF工业信息安全技能大赛-异常的s7comm... FLAG Flag{3KJJEwWJ3FoiJlMn} [^3]: CTFHub S7协议恶意攻击分析 WP... 在数据包时1321发现了stop,把前四位和后四位拿出来得到flag
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值