20250415_信安一把梭_encode

Tags:流量分析, 应急响应, 数据解析, tcp, pyshark, 正则匹配, json, 信安一把梭

0x00. 题目

请分析某设备导出的流量包,找到攻击IP和正确密码(攻击IP以分析后的为主而不是流量包中的Source和Destination)

格式如下:例如攻击IP为192.168.1.1密码为admin,则flag{192.168.1.1_admin)


附件路径:https://pan.baidu.com/s/1GyH7kitkMYywGC9YJeQLJA?pwd=Zmxh#list/path=/CTF附件

附件名称:20250415_信安一把梭_encode.zip

0x01. WP

1. 流量包分析

发现流量大多为TCP协议,其中部分有DATA数据,对应字段进行Base64解码后为json格式日志,其中目测info内容还需要进行Base64解码

image

2. 数据抽取

exp.py

# -*- coding: utf-8 -*-
import pyshark, os, re,time
import base64
import json

# 为排除解决raiseRuntimeError(‘This event loop is already running’)报错问题
import nest_asyncio
nest_asyncio.apply()

# Author: Jason.J.Hu

# 初始化全局参数
strCapPath = "20250415_encode.pcapng"

iHTTP=0
strFomula="((tcp) && (data))"

cap = pyshark.FileCapture(strCapPath, display_filter=strFomula)

print(time.strftime("%H:%M:%S", time.localtime()), "HTTP分析开始 ... ...")

for pkt in cap:
    intRequestNumber = pkt.number
    # print("\r\tFrame Number: %s " % str(intRequestNumber), end="")
    for layer in pkt.layers:
        # 如果请求地址为120.142则对data节点提取数据后在进行json解析并对日志内容进行二次解析
        if pkt.ip.src=="192.168.120.142":
            if layer.layer_name == "DATA":  # 指定协议层
                sData=layer.get_field_value("data_data")  #指定字段            
                sData="".join((sData.split(":")))
                sData=bytes.fromhex(sData).decode('utf-8')
                sData=base64.b64decode(sData).decode('utf-8')
                sJSON = json.loads(sData)
                sLog = base64.b64decode(sJSON.get("info")).decode('utf-8')
                print(sLog)
        else:
            # 如果ip.src不是120.142,直接对data进行Base64解析
            if layer.layer_name == "DATA":  # 指定协议层
                sData=layer.get_field_value("data_data")  #指定字段            
                sData="".join((sData.split(":")))
                sData=bytes.fromhex(sData).decode('utf-8')
                sData=base64.b64decode(sData).decode('utf-8')
                print(sData)
    iHTTP += 1

print("\r")
print(time.strftime("%H:%M:%S", time.localtime()), "HTTP分析结束。")

3. 日志分析

# 由于日志量较大,直接将结果输出到文件
python3 exp.py > log.log

发现爆破行为,返回值有Login xxx字样,筛选出Login Success结果并找到对应的请求

得到最终flag:flag{192.168.120.137_zxcv123}

image

posted @ 2025-09-22 14:47  JasonJHu  阅读(14)  评论(0)    收藏  举报