2023陇剑杯初赛WP
HW
hard_web_1

首先判断哪个是服务器地址

从响应包看,给客户端返回数据包的就是服务器
所以确定服务器地址是192.168.162.188
再从开放端口来看,长期开放的端口
客户端发送一个TCP SYN包(同步请求),其中包含目标IP地址和要访问的端口号。
服务器收到SYN包后,如果端口是开放的,它会向客户端发送一个TCP SYN-ACK包(同步应答),以表示端口是开放的,并准备接受连接请求。
客户端在收到服务器的SYN-ACK包后,会向服务器发送一个TCP ACK包(确认应答),以建立连接。
一旦连接建立,数据可以在客户端和服务器之间传输。
所以用语句:
tcp.connection.synack && ip.dst==192.168.162.188

所以就是80、888、8888
hard_web_2

按照包名顺序找到HTTP的包

找到回显开始是200且命令执行的地方
这里追踪HTTP流只能看到注入内存马的地方,更远的地方看不到了
所以就从最后一个创建内存马的包入手

可以看到AES加密和密钥
找到的流量复制为16进制

复制多余的地方直接丢到vscode替换

上厨子解密:

打开就是flag

hard_web_3

数据包tcp.stream eq 20052的回显发现:

结合前面的748007e861908c03,用脚本爆破密钥
或者直接cmd5解密
SS
SS1


先看数据包
找到Hello路由的第一个数据包:

可以看到class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=
直接上网:

CVE-2022022965
ss2


检索到TCP的前一个HTTP流量包可以看到反弹shell的语句
SS3


SS4

直接看/etc/shadow

可以直接看到账号和密码
SS5

外网IP可以看home目录下的log文件

可以看到IP地址
SS6

释放的文件

就这两
SS7


SS8


BF
BF1

磁盘中的key是多少
volatility取证

找key.txt:

提取文件:


这个反复提交不对,结果要rot转码…服了

BF2

vol.exe -f C:\CTF\2023陇剑杯\BF\baby_forensics_58a2fd5b17eac8108638f334c399de4a\baby_forensics.raw --profile=Win7SP1x64 windows > raw

我感觉这种有点难以理解为什么这个就是最后的答案,有了一个方法:
先把calc的内存提出来

然后把导出来的文件重命名为2844.data,然后丢到GIMP里面分析,把高度拉长一点往下面划就可以看到了

BF3


一样是把这个进程dump出来

调分辨率看到字符串
U2FsdGVkX195MCsw0ANs6/Vkjibq89YlmnDdY/dCNKRkixvAP6+B5ImXr2VIqBSp94qfIcjQhDxPgr9G4u++pA==
导出密钥:



TP
TP1

条件锁定一下ip.src==172.31.0.2 && ip.dst == 172.31.0.1
下面回显长的翻一下


TP2

越权漏洞:

一个userid为1
另一个userid为2

TP3


确实不知道这个有什么技巧,硬找
TP4

后面已经可以看到反弹shell了

追踪前面一个流:

这里似乎就是写文件进去了,看一下是什么cve

所以就是CVE-2022-21724:custom.dtd.xml
TP5


一个一个翻,就是fscan_amd64
HD
hd1

找到一个数据包:

在第一个数据包里面给了aes的密钥和偏移量
去解密

账号是admin

解密就是admin123了
hd2


一个一个翻,找到了配置进去看

全部丢进去解密

hd3

直接用第二题的密钥解码cookie,发现有SSTI注入


并且回显在了页面上
我们找比较可疑的回显:
一个None和没东西的:


分别解密,发现None没啥
但是空的那个有执行whomai命令,请求包解密一次,回显解密一次得到用户red


hd4


加了一个/Index路由
WS
ws1

被入侵直接看端口

Telnet协议,23端口往外发信息
所以源地址就是被攻击地址,所以就是192.168.246.28
ws2

追踪一手TCP可以看到密码:

ws3


ws4


SSW
ssw1

这里确实有点算是知识盲区了
我们假设一句话是
<?php @eval($_POST['shell']);?>
那么我们用wireshark抓包就是:
显而易见@ini_set("display_errors", "0");@set_time_limit(0)前面的就是密码了

所以这里的密码就是6ea280898e404bfabd0ebb702327b19f了
ssw2

u1s1我真不知道这个有什么技巧

纯靠硬找

ad6269b7-3ce2-4ae8-b97f-f259515e7a91就是留存值
ssw3

直接全部保存分析最大的包:

改成exe,然后用py分析:(地址:https://github.com/extremecoders-re/pyinstxtractor)

其中有一个2.pyc反编译后:

发现有图片,直接运行之后可以发现test.jpg
报错了没关系还是生成了
然后misc那一套该长度

EW
ew1

第一眼以为是这个d00r.php

提交发现不对,所以就看哪里生成了这个d00r.php

就找,可以找到这个ViewMore.php
ew2

追踪d00r.php的HTTP数据包

有一个扫描的,上面有一个ipconfig

有好几个网卡
就是和nmap那个同一个网段就是192.168.162.130
ew3

最下面有这个数据包:

直接拷下来运行php
<?php
file_put_contents('k3y_f1le',base64_decode('UEsDBBQAAQAAANgDvlTRoSUSMAAAACQAAAAHAAAAa2V5LnR4dGYJZVtgRzdJtOnW1ycl/O/AJ0rmzwNXxqbCRUq2LQid0gO2yXaPBcc9baLIAwnQ71BLAQI/ABQAAQAAANgDvlTRoSUSMAAAACQAAAAHACQAAAAAAAAAIAAAAAAAAABrZXkudHh0CgAgAAAAAAABABgAOg7Zcnlz2AE6DtlyeXPYAfldXhh5c9gBUEsFBgAAAAABAAEAWQAAAFUAAAAAAA=='));


查看文件类型是zip,重命名为zip
打开发现需要密码

密码就在上面

打开就是flag
IR
IR1

看ps aux进程,有redis有nginx

把文件都脱下来发现redis-server有后门,但是说是php后门(D盾和DF都没扫出来病毒)

文件类型就是一个可执行的,没什么其他信息,主要是conf文件

里面有个池有个地址

发现确实是挖矿病毒
IR2

域名就是上面conf文件里面的donate.v2.xmrig.com

IR3

攻击者利用的方法这种题目,主要是看服务器有什么服务
就这题来说,有redis,nginx,javaweb三大主流服务
redis是刚才的挖矿再考的概率低一点,可以放最后看
最可疑的就是nginx了,看一下nginx的日志:

发现是同一个ip大量爆破login页面,起初以为是弱口令,但是只访问了login页面,并没有访问其他页面,那就是shiro!!
还有一个javaweb

看一下他的日志

确定是shiro漏洞了
但是答案是啥…
是shirodeserialization(没意思,叫shiro不好吗)

IR4

就是nginx日志里面频繁访问/login页面的那个ip


IR5

mozilla/5.0(compatible;baiduspider/2.0;+http://www.baidu.com/search/spider.html)

IR6

维持权限的配置文件
/etc/passwd
/etc/shadow
/etc/sudo
…
一大堆

一眼ssh
看一下没啥东西

接着看ssh

发现连接到klai的ssh里了
IR7

就是刚才的redis

自动开启redis挖矿也算