下载附件,解压的时候发现注释:5unVpeVXGvjFah
解压得到的flag.txt文件内容如下:
注释5unVpeVXGvjFah放到随波逐流中一键解码发现base58解码得出一个正常点的字符串:Welcome2GZ,应该是某个key?
去hex解码(十六进制解码)一下:
从输出结果可以看出,基本都是TLS流量,推测还有key.log,可以直接保存为.pcapng文件或者也可以用脚本生成1.pcapng文件:
def hex_to_pcapng(hex_string, output_file):# 将十六进制字符串转换为字节数据byte_data = bytes.fromhex(hex_string)# 将字节数据写入文件with open(output_file, 'wb') as f:f.write(byte_data)def clean_hex_string(hex_string):# 清理输入,去掉任何非十六进制字符,并确保长度为偶数cleaned_hex = ''.join(filter(lambda x: x in '0123456789abcdefABCDEF', hex_string))# 如果长度是奇数,则移除最后一个字符以确保长度为偶数if len(cleaned_hex) % 2 != 0:print("警告:十六进制字符串长度为奇数,已自动修正。")cleaned_hex = cleaned_hex[:-1]return cleaned_hexif __name__ == "__main__":# 读取十六进制字符串(假设从文件中读取)input_file = r"E:\\downloads\\FLag.txt"with open(input_file, 'r') as f:hex_string = f.read().strip()# 检查文件是否以0d0a开头并去除之if hex_string.startswith('0d0a'):hex_string = hex_string[4:]# 打印出 hex string 以供调试print(f"原始十六进制字符串:{hex_string}")# 清理输入hex_string = clean_hex_string(hex_string)# 写入pcapng文件output_filename = r"E:\\downloads\\1.pcapng"hex_to_pcapng(hex_string, output_filename)print(f"已成功转换为 {output_filename}")
观察发现Flag.txt中有很多空白字符和空字符,所以猜到用wbstego去提取:
得到一个.log文件:
导入TLS的日志1.log:
http contains "flag"
“GIF89a”很明显的.gif文件,也可以追踪TLS流查看信息:
当然也可以通过NetA工具来分析一下:
一样能检测出有flag.gif的字符串
选择原始数据,另存为.gif文件:
此时直接打开会显示图片已损坏(因为有报文头的干扰),用010editor打开,按照(.gif文件的文件头和文件尾)的格式来保存文件:
文件头47 49 46 38
文件尾00 38
得到正常的gif图片:
用PuzzleSolver提取帧间隔:
得到如下内容:
['30', '230', '30', '230', '30', '230', '30', '230', '30', '230', '30', '230', '230', '230', '230', '230', '30', '30', '230', '230', '30', '30', '30', '30', '30', '230', '230', '230', '30', '230', '230', '230', '30', '230', '30', '30', '230', '230', '230', '30', '30', '230', '30', '230', '230', '230', '230', '230', '30', '30', '230', '230', '30', '30', '30', '230', '30', '230', '30', '230', '30', '230', '30', '30']
很明显,30转为0,230转为1,二进制转文本:
得到flag:
DASCTF{U_0wN_1T}