例题
1.简单流量分析-攻防世界
题目描述:
不久前,运维人员在日常安全检查的时候发现现场某设备会不时向某不知名ip发出非正常的ICMP PING包。这引起了运维人员的注意,他在过滤出ICMP包分析并马上开始做应急处理很可能已被攻击的设备。运维人员到底发现了什么? flag形式为 flag{}
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]))
┌──(kali㉿kali)-[~/Desktop] └─$ python rsa.py fetus_pcap.pcap b'::\\nmongodb:!:17843:0:99999:7:::\\nubuntu:$6$LhHRomTE$M7C4n84UcFLAG{xx2b8a_6mm64c_fsociety}::'
2.工业协议分析2-攻防世界
题目描述:
在进行工业企业检查评估工作中,发现了疑似感染恶意软件的上位机。现已提取出上位机通信流量,尝试分析出异常点,获取FLAG。 flag形式为 flag{}
题目描述说已提取出上位机通信流量,尝试分析出异常点,获取FLAG。 flag形式为 flag{},这其实就是一个暗示,flag就在通信流量中,至于哪里异常,查了资料,有的说UDP的长度有部分异常,要一个个点击查看。可是为什么我感觉UDP大的一堆,小的也一堆,也不知道哪里异常:
其实在题目中已经暗示了flag就在异常流量中,直接搜索flag搜索不到,将flag转化为16进制,然后进行搜索。
>>> n='flag'
>>> flag=''
>>> for i in n:
... flag += hex(ord(i))
...
>>> flag
'0x660x6c0x610x67'
>>> flag.replace('0x','')
'666c6167'
>>>
666c61677b37466f4d3253746b6865507a7d
然后进行转换
>>> m='666c61677b37466f4d3253746b6865507a7d'
>>> flag=''
>>> for i in range(0,len(m),2):
... flag += chr(int(m[i:i+2],16))
...
>>> flag
'flag{7FoM2StkhePz}'
就这样,啾咪!