长亭百川云 - 文章详情

2024年中国工业互联网安全大赛智能家电赛道选拔赛 by Mini-Venom

ChaMd5安全团队

54

2024-07-15

招新小广告CTF组诚招re、crypto、pwn、misc、合约方向的师傅,长期招新IOT+Car+工控+样本分析多个组招人有意向的师傅请联系邮箱

admin@chamd5.org(带上简历和想加入的小组)

初步密码学

题目信息

import rsa  
  
def rsaencode(m):  
    # 生成RSA密钥对  
    (pubkey, privkey) = rsa.newkeys(256)  
    # 获取公钥和私钥参数  
    n = pubkey.n  
    print(n)  
    e = pubkey.e  
    print(e)  
    c = rsa.encrypt(m, pubkey)  
    return c  
  
def add_one_to_ascii(data):  
    result = bytearray()  
    for byte in data:  
        result.append(byte + 1)  
    return bytes(result)  
  
def xor_bytes(data, key):  
    result = bytearray()  
    for byte in data:  
        result.append(byte ^ key)  
    return bytes(result)  
  
if __name__ == '__main__':  
    # 使用公钥进行加密  
    m=xor_bytes(add_one_to_ascii(x),12)  
    c=rsaencode(m)  
    print("加密后的密文:", c.hex())  
  
  
#output  
71484438965393396388835335667806052411397994375702758854090697767967524655627  
65537  
加密后的密文:0x515b50d7407f4f321ddea14d0d99e4134c285ee6b7b92b77f3ed65f32212a529

操作内容
已知n,e,n的比特256位,可使用yafu分解

攻击流量
得到p q后,常见思路解密即可

import rsa  
  
def rsa_decode(c, pubkey):  
    # 从公钥生成对应的私钥  
    privkey = rsa.PrivateKey(pubkey.n, pubkey.e, pubkey.d, pubkey.p, pubkey.q)  
    m = rsa.decrypt(c, privkey)  
    return m  
  
def subtract_one_from_ascii(data):  
    result = bytearray()  
    for byte in data:  
        result.append(byte - 1)  
    return bytes(result)  
  
def xor_bytes(data, key):  
    result = bytearray()  
    for byte in data:  
        result.append(byte ^ key)  
    return bytes(result)  
  
# RSA 公钥参数  
n = 71484438965393396388835335667806052411397994375702758854090697767967524655627  
e = 65537  
  
# 加密后的密文 (已转换为字节)  
ciphertext = bytes.fromhex('515b50d7407f4f321ddea14d0d99e4134c285ee6b7b92b77f3ed65f32212a529')  
  
# 创建公钥对象  
pubkey = rsa.PublicKey(n, e)  
  
  
p = 895534711824738922785094048763390663  
q = 79823191688166851259736970548355545692829  
d = 19619308233067290551077729872542647104506154812668367156272584280826183049209  
privkey = rsa.PrivateKey(n, e, d, p, q)  
  
# 解密得到加密前的数据  
decoded_data = rsa.decrypt(ciphertext, privkey)  
  
# 逆向处理数据  
decoded_data = xor_bytes(decoded_data, 12)  
original_data = subtract_one_from_ascii(decoded_data)  
  
print("解密后的原始明文:", original_data)

flag{954fbe80adb799}

恶意攻击流量

题目信息
应用系统被植入了恶意后门,并从流量中识别其中的flag,操作内容
我们判断找到了蚁剑流量,在153包里

使用base64解密,得到

cd "/var/www/html";echo ZmxhZ3szOTA4NEVFRjJEMjhFOTQxRjUzRTRBMUFBMUZBNjc2Nn0K|base64 -d > ./flag.txt;echo cc6288cd;pwd;echo 2ddc1cfd81

再使用base64解密
ZmxhZ3szOTA4NEVFRjJEMjhFOTQxRjUzRTRBMUFBMUZBNjc2Nn0K
得到

flag{39084EEF2D28E941F53E4A1AA1FA6766}

MQTT协议分析

题目信息
MQTT协议是一个基于客户端-服务器消息发布/订阅传输协议。MQTT协议具备轻量、简单、开放和易于实现等特点,使它适用范围非常广泛。附件中MQTT报文存在flag
操作内容
追踪tcp流,看到

将字符串组合起来,转16进制后得到

504b0304140001000000fb81e158591948f02000000014000000080000006d7174742e7478741b14fe05d941726530b707cce78a2bd8639d2ce0fdb7ce63270fe005a5f130ed504b01023f00140001000000fb81e158591948f020000000140000000800240000000000000020000000000000006d7174742e7478740a0020000000000001001800604005e48ecbda0100000000000000000000000000000000504b050600000000010001005a000000460000000000

使用cyberchef

提取另存得到压缩包

解码后的密码是 passwd_mqtt_6666 密码解压得到flag

flag{mqtt_flag_8888}

传感器异常

题目信息
工厂的温度传感器能存储一段时间内的读数,但最近存在异常读取的情况,请把具体Reference Numbe
操作内容
为了查找异常值,使用wireshark过滤器语法

modbus.reference_num >= 212

得到

Reference Number: 19934

flag{19934}

re

查文件

64位,查看ida反汇编

蓝牙数据分析

将以上按顺序base64解密
依次拼接就好(f1,f2,f3顺序)
flag{
adsjopvap
349ls}

结束

招新小广告

ChaMd5 Venom 招收大佬入圈

新成立组IOT+工控+样本分析 长期招新

欢迎联系admin@chamd5.org

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2