Solar9月赛
Wireshark
哥斯拉流量,webshell的密码一直变,neta可以梭到一个zip,里面是key.txt,直接追踪到最后一个返回包,拿key.txt进行爆破解密拿到flag
flag{ccebdb78-4b5c-4252-b20a-0039913c5c94}
HAPPY
把反编译的汇编程序和FLAG.ENC的十六进制信息交给AI,直接编写程序解密脚本即可。
import struct# FLAG.ENC 的十六进制数据(你提供的)
enc_hex = """
5A 58 5F 4C 4F 43 4B 01 D9 06 D1 6D F4 9B 08 B3
61 81 70 A1 3D 8B 80 D1 BB 82 F0 B1 F1 9B 3C A0
75 87 7B 9B B8 C6 AB EB CA 95 EB DC 1A C6 32 D7
42 C5 6C C4 DF A5 F9 A5 99 B2 FA 86
"""# 解析为字节
enc_bytes = bytes.fromhex(enc_hex.replace('\n', '').replace(' ', ''))# 验证头部
assert enc_bytes[:7] == b'ZX_LOCK', "Invalid header"# 读取奇偶标志
is_odd = enc_bytes[7] # 0x01# 读取初始 key(小端序,2 字节)
initial_key = struct.unpack('<H', enc_bytes[8:10])[0] # 0x06D9# 剩余加密数据
cipher_data = enc_bytes[10:]# 确保 cipher_data 长度为偶数(按 word 处理)
if len(cipher_data) % 2 != 0:cipher_data += b'\x00' # padding(但你的数据应该是偶数)# 定义加密函数(用于解密,因为算法可逆)
def transform_word(p, k):k += 0xFADEc1 = p & kc2 = (~c1) & 0xFFFFc3 = p & c2c4 = (~c3) & 0xFFFFc5 = k & c2c6 = (~c5) & 0xFFFFc7 = c4 & c6result = (~c7) & 0xFFFFreturn result, k# 注意:由于加密过程是确定性的,且 transform 是自反的(验证过),我们可以用相同函数解密
# 但必须使用相同的 key 序列!# 解密
key = initial_key
plain_words = []
cipher_words = struct.unpack('<' + 'H' * (len(cipher_data) // 2), cipher_data)for cw in cipher_words:# 用当前 key 解密这个 word# 但由于 transform 是自反的,直接再 transform 一次即可还原pw, key = transform_word(cw, key)plain_words.append(pw)# 转为字节(小端)
plain_bytes = b''.join(struct.pack('<H', w) for w in plain_words)# 如果原始长度是奇数,去掉最后一个字节(因为加密时补了 0)
if is_odd:plain_bytes = plain_bytes[:-1]# 输出 flag
print("Decrypted FLAG:")
try:print(plain_bytes.decode('ascii'))
except:print("Raw bytes:", plain_bytes.hex())print("As ASCII (with errors):", plain_bytes.decode('ascii', errors='replace'))
flag{D0s_L0ck3r_WitH_n4Nd_ExpRs!|solarsec_202509}
应急响应
找到setup,就全解决了。
任务1
tmp目录下发现挖矿程序,比较明显
flag{/tmp/kworkerds}
任务2
netstat一下,看到外联信息。
flag{104.21.6.99:10235}
任务3
根据4,反找的3
flag{/usr/bin/.0guardian}
strings一下,找到守护进程同时找到定时任务里面的
flag{/usr/bin/.0guardian}
任务4
flag{http://www.superlog-pro.com}
就聊天即可。
任务5
strings一下,推测就是这些。
还是在setup里面找的
flag{dac48e98a53b81b0218e2156e364f7ba}
任务6
把给的deb解压手动安装替换掉被感染的即可。
for pkg in /deb_final/*.deb; do dpkg-deb -x "$pkg" /; done
flag{e510c5fca680b1b4bd5c9d8d6b3f4bdc}
任务7
把那几个删除掉(cron.d下的和/usr/bin下的守护进程,3题),一开始想跳过6先做7发现删不了tmp目录下的,之后做完6修复掉以后tmp目录下的挖矿程序就没了,但是还需要kill掉进程。
flag{081ce3688c6cd6e2946125081381087c}