本文最后更新于 2025年3月31日 晚上
比赛 + 赛后复现的题解
【签到】和黑客去Battle把! 1 2 3 4 题目描述 某某文化有限公司被加密啦!老板给了小王5000 美元请你帮助小王和黑客谈判争取使用最低的价格买下密钥! 【用户ID为登录青少年CTF 平台的手机号】 【本题为模拟请勿当真!禁止攻击平台!】
打开 README.txt,找到了 ID 和网址:https://www.phantomhand.top/
ID 和手机号登录,一直跟它讨价还价,直到它接受 5000 USDT,然后答应就拿到 flag
1 flag {H7Q44S85842W6TQZPERS72ED}
窃密排查-1 1 2 3 题目描述 发现内部数据被窃取,进行紧急上机。请通过黑客遗留痕迹进行排查: 找到黑客窃密工具的账号
把目录翻遍,在 /tmp
目录下找到了 mega 服务,root 运行
进入 /root
目录找到隐藏文件夹
查看目录下的 megacmdserver.log
日志文件
1 2025 -03 -26 _03-51 -59 .862963 cmd INFO Login complete as 25 solar3abc@habenwir.com [megacmdexecuter.cpp:2721]
找到账号 25solar3abc@habenwir.com
1 flag{25solar3abc@ habenwir.com}
2503逆向 1 2 3 题目描述 重要文件被加密了,请分析加密器解开该文件。 提示:加密前的文件前四个字节为flag ,且开机时间较短
64 位可执行文件
shift+f12 搜索字符串,然后从字符串定位到 main 函数
大概流程:读取明文文件 flag.txt
,用 GetTickCount()
作为 srand
种子,生成16字节随机密钥,字符都来自 v14
这个字符集,也就是上面的 qa0wserdf1tg9yuhjio2pklz8xbvcn4mPL7JKOIHUG3YTF6DSREAWQZX5MNCBV
这串字符,然后调用 sub_140001350
函数进行加密得到 flag.txt.freefix
sub_140001350
是标准的 RC4 算法,包含 KSA 和 PRGA 阶段
010 打开加密文件
提取加密后文件数据
1 4C 00 2 F AD 84 10 58 AC 8 D D1 59 69 79 FB 9 D B5 C5 FA 60 17 B0 46 E8 75 D6 CD DE D7 57 DC 7 C 96 E1 15 F3 BD C0 72 98 91 88 4 D 0 C BA 66 04 C9
拷问 deepseek 能出,爆破种子,poc 如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 import sysfrom concurrent.futures import ThreadPoolExecutor CHAR_POOL = "qa0wserdf1tg9yuhjio2pklz8xbvcn4mPL7JKOIHUG3YTF6DSREAWQZX5MNCBV" CIPHER_HEX = "4C002FAD841058AC8DD1596979FB9DB5C5FA6017B046E875D6CDDED757DC7C96E115F3BDC0729891884D0CBA6604C9" ciphertext = bytes .fromhex(CIPHER_HEX)class MSVCRand : def __init__ (self, seed ): self .state = seed def rand (self ): self .state = (self .state * 214013 + 2531011 ) & 0xFFFFFFFF return (self .state >> 16 ) & 0x7FFF def generate_key (seed ): """生成16字节密钥(严格匹配C++逻辑)""" rng = MSVCRand(seed) key = [] for _ in range (16 ): index = rng.rand() % 62 key.append(CHAR_POOL[index]) return '' .join(key)def rc4_decrypt (ciphertext, key ): S = list (range (256 )) j = 0 key_bytes = [ord (c) for c in key] key_len = len (key_bytes) for i in range (256 ): j = (j + S[i] + key_bytes[i % key_len]) % 256 S[i], S[j] = S[j], S[i] i = j = 0 plaintext = [] for byte in ciphertext: i = (i + 1 ) % 256 j = (j + S[i]) % 256 S[i], S[j] = S[j], S[i] k = S[(S[i] + S[j]) % 256 ] plaintext.append(byte ^ k) return bytes (plaintext)def worker (seed ): key = generate_key(seed) plaintext = rc4_decrypt(ciphertext, key) if plaintext.startswith(b'flag{' ) and b'}' in plaintext: return seed, key, plaintext.decode(errors='ignore' ) return None def main (): print ("[*] 正在破解种子范围: 0 - 10,000,000" ) with ThreadPoolExecutor(max_workers=8 ) as executor: chunk_size = 100000 total = 10_000_000 found = False for base in range (0 , total, chunk_size): chunk_start = base chunk_end = min (base + chunk_size, total) futures = [executor.submit(worker, seed) for seed in range (chunk_start, chunk_end)] for future in futures: result = future.result() if result: print (f"\n[+] 解密成功!种子: {result[0 ]} " ) print (f"[+] 使用的密钥: {result[1 ]} " ) print (f"[+] Flag内容: {result[2 ]} " ) found = True executor.shutdown(wait=False ) sys.exit(0 ) progress = (chunk_end / total) * 100 print (f"\r进度: {chunk_end:,} /{total:,} ({progress:.2 f} %)" , end='' , flush=True ) if found: break if not found: print ("\n[-] 未在指定范围内找到有效种子,建议:" ) print (" 1. 检查密文是否正确" ) print (" 2. 扩大种子范围(参见之前的7天范围方案)" )if __name__ == "__main__" : main()
拿到 flag
1 flag{hello_www.sierting.com_fodhaoijsa08324082 }
溯源排查-1 1 2 题目描述 某企业的阿里云服务器,现已将镜像从阿里云下载下来,该服务器存在奇怪的外连,请排查出外连地址
把 raw 转成 vmdk 再导入 VM,然后登录对 eth0 抓包,监控非 SSH 的流量
1 tcpdump -i eth0 not port 22 -nn
发现了对同一个 IP 请求
1 flag {156.238.230.167:46578 }
溯源排查-2
systemctl status
查看服务发现同时有两个相似服务, systemd-journald
用于日志管理,另一个 journaled
是伪造成系统进程的外连进程
同时也可以用 top 命令监控系统进程资源
然后查找位置
1 flag{/usr/ local/systemd/ journaled}
溯源排查-3
R-Studio 挂载进入上面的目录
可以链接到 /tmp/tmp/hsperfdata_root
内的两个被删除的文件
在 /etc/systemd/system
下可以找到这个服务,就是这个服务名称
溯源排查-4 1 2 题目描述 业务系统已被删除,找出可能存在漏洞的应用
发现有 nacos
溯源排查-5 Nacos历史漏洞复现(汇总)
但是这不是 CNVD 吗???
溯源排查-6 1 2 题目描述 找出黑客利用漏洞使用的工具的地址,该工具为开源工具
直接搜 nacosrce
找到了工具
1 flag{https://gi thub.com/c0olw/ NacosRce}
关于仿真 参考的 n0o0b 师傅的文章:https://www.n0o0b.com/archives/solar-3#%E6%BA%AF%E6%BA%90%E6%8E%92%E6%9F%A5-1 写得很详细