题目考点
rot13解密
文件格式判断
解题思路
在http流量包的第84个数据包
80324Guvf gevc yrsg fbzr pbagrag gung hfrf gur fnzr rapbqre nf gur Gebwna ubefr,OHQOPLNjRWfb0BMlmGlIra7pDAm9dUp/33FTqq1DlduIP2DDH8qWaEt7/jL= 2166rrq9n /ebbg 0psrq167p 5a9ae81
rot13解密得到:
80324This trip left some content that uses the same encoder as the Trojan horse,BUDBCYAwEJso0OZyzTyVen7cQNz9qHc/33SGdd1QyqhVC2QQU8dJnRg7/wY= 2166eed9a /root 0cfed167c 5n9nr81
将密文 BUDBCYAwEJso0OZyzTyVen7cQNz9qHc/33SGdd1QyqhVC2QQU8dJnRg7/wY= 进行 Base64 解码,得到二进制数据。
import base64
data = base64.b64decode('BUDBCYAwEJso0OZyzTyVen7cQNz9qHc/33SGdd1QyqhVC2QQU8dJnRg7/wY=')
print(data[:2])
输出:b'x\x9c'
前两个字节是 0x78 0x9C,这是 zlib 压缩格式的头部标记,使用 zlib.decompress(data, -zlib.MAX_WBITS) 解压。
解压后的数据为 UTF-8 编码的字符串,即 flag。
import base64, zlib
b64 = "BUDBCYAwEJso0OZyzTyVen7cQNz9qHc/33SGdd1QyqhVC2QQU8dJnRg7/wY="
data = base64.b64decode(b64)
plain = zlib.decompress(data, -zlib.MAX_WBITS)
print(plain.decode())
flag{175374be-4547-f6f6-2232-14d7524d30a5}
