一、靶场地址
https://buuoj.cn/challenges#[羊城杯%202020]TCP_IP
二、复现步骤
1、下载题目给的附件,是一个pcap数据包文件,并用wireshark打开文件;
2、通过对数据包进行筛选,未发现flag相关的标志;
3、应该是隐写到了IP数据报的Identification字段,使用tshark命令提取;
右键Identification得到字段名称:ip.id
tshark.exe -r E:\download\attachment.pcap -T fields -e ip.id > data.txt
tshark:命令行工具参数介绍。
-r .\attachment.pcap:-r 选项指定要读取的 pcap 文件。
-T fields:-T 选项指定输出格式,fields 表示以字段列表的形式输出。
-e ip.id:-e 选项后面跟着的是你要提取的字段名。
> data.txt:这部分是将 tshark 的输出重定向到一个名为 data.txt 的文件中。
data.txt文件内容:
0x0040
0x0069
0x0048
0x003c
0x002c
0x007b
0x002a
0x003b
0x006f
0x0055
0x0070
0x002f
0x0069
0x006d
0x0022
0x0051
0x0050
0x006c
0x0060
0x0079
0x0052
0x002a
0x0069
0x0065
0x007d
0x004e
0x004b
0x003b
0x002e
0x0044
0x0021
0x0058
0x0075
0x0029
0x0062
0x003a
0x004a
0x005b
0x0052
0x006a
0x002b
0x0036
0x004b
0x004b
0x004d
0x0037
0x0050
0x0040
0x0069
0x0048
0x003c
0x002c
0x007b
0x002a
0x003b
0x006f
0x0055
0x0070
0x002f
0x0069
0x006d
0x0022
0x0051
0x0050
0x006c
0x0060
0x0079
0x0052
不难看出data.txt中的是十六进制数,去掉前面的0x00,只保留最后两位,并转ascii码
在线十六进制转ascii码:https://coding.tools/cn/hex-to-ascii
@iH<,{*;oUp/im"QPl`yR*ie}NK;.D!Xu)b:J[Rj+6KKM7P@iH<,{*;oUp/im"QPl`yR
4、通过大模型得出是经过base91编码的,并利用python脚本解码;
import base91# Base91 编码的字节串
encoded_bytes = b'@iH<,{*;oUp/im"QPl`yR*ie}NK;.D!Xu)b:J[Rj+6KKM7P@iH<,{*;oUp/im"QPl`yR'# 将字节串转换为字符串
encoded_str = encoded_bytes.decode('utf-8')# 使用 base91 库进行解码
try:decoded_data = base91.decode(encoded_str)print("解码结果:", decoded_data)
except Exception as e:print("解码失败:", e)
flag{wMt84iS06mCbbfuOfuVXCZ8MSsAFN1GA}