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挖矿也算



















