前言
继续ctf的旅程
攻防世界Crypto高手进阶区的5分题
本篇是简单流量分析的writeup
发现攻防世界的题目分数是动态的
就仅以做题时的分数为准了
解题过程
题目描述
binwalk无果
查找关键词无果
每个包都有一串字符
但是常规解密失败
那猜测是某几个长度不对劲的包有问题
或者在长度或ttl之类的数值上做了隐写或加密
然后发现包长度从90到164
而data段的长度从48到122
对应ascii码是0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_abcdefghijklmnopqrstuvwxyz
那就提取data长度
转为ascii码
再base64
from pyshark.capture.file_capture import FileCapture
from base64 import b64decode
from sys import argv
def solve(file_name):
packets=FileCapture(input_file=file_name)
res=''
for packet in packets:
for pkt in packet:
if pkt.layer_name=='icmp' and int(pkt.type,16):
res+=chr(int(pkt.data_len))
return b64decode(res)
if __name__=='__main__':
print solve(argv[1])
得到flag:flag{xx2b8a_6mm64c_fsociety}
结语
数据包某个数值的长度常被用来传递信息