首先判断哪个是服务器地址
从响应包看,给客户端返回数据包的就是服务器
所以确定服务器地址是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
按照包名顺序找到HTTP的包
找到回显开始是200且命令执行的地方
这里追踪HTTP流只能看到注入内存马的地方,更远的地方看不到了
所以就从最后一个创建内存马的包入手
可以看到AES加密和密钥
找到的流量复制为16进制
复制多余的地方直接丢到vscode替换
上厨子解密:
打开就是flag
数据包tcp.stream eq 20052的回显发现:
结合前面的748007e861908c03,用脚本爆破密钥
或者直接cmd5解密
先看数据包
找到Hello路由的第一个数据包:
可以看到class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=
直接上网:
CVE-2022022965
检索到TCP的前一个HTTP流量包可以看到反弹shell的语句
直接看/etc/shadow
可以直接看到账号和密码
可以看到IP地址
释放的文件
就这两
磁盘中的key
是多少
volatility取证
找key.txt
:
提取文件:
这个反复提交不对,结果要rot转码…服了
vol.exe -f C:\CTF\2023陇剑杯\BF\baby_forensics_58a2fd5b17eac8108638f334c399de4a\baby_forensics.raw --profile=Win7SP1x64 windows > raw
我感觉这种有点难以理解为什么这个就是最后的答案,有了一个方法:
先把calc的内存提出来
然后把导出来的文件重命名为2844.data,然后丢到GIMP里面分析,把高度拉长一点往下面划就可以看到了
一样是把这个进程dump出来
调分辨率看到字符串
U2FsdGVkX195MCsw0ANs6/Vkjibq89YlmnDdY/dCNKRkixvAP6+B5ImXr2VIqBSp94qfIcjQhDxPgr9G4u++pA==
导出密钥:
条件锁定一下ip.src==172.31.0.2 && ip.dst == 172.31.0.1
下面回显长的翻一下
越权漏洞:
一个userid为1
另一个userid为2
确实不知道这个有什么技巧,硬找
后面已经可以看到反弹shell了
追踪前面一个流:
这里似乎就是写文件进去了,看一下是什么cve
所以就是CVE-2022-21724:custom.dtd.xml
一个一个翻,就是fscan_amd64
找到一个数据包:
去解密
账号是admin
解密就是admin123了
一个一个翻,找到了配置进去看
全部丢进去解密
直接用第二题的密钥解码cookie,发现有SSTI注入
并且回显在了页面上
我们找比较可疑的回显:
一个None和没东西的:
分别解密,发现None没啥
但是空的那个有执行whomai命令,请求包解密一次,回显解密一次得到用户red
加了一个/Index路由
被入侵直接看端口
Telnet协议,23端口往外发信息
所以源地址就是被攻击地址,所以就是192.168.246.28
追踪一手TCP可以看到密码:
这里确实有点算是知识盲区了
我们假设一句话是
@eval($_POST['shell']);?>
那么我们用wireshark抓包就是:
显而易见@ini_set("display_errors", "0");@set_time_limit(0)
前面的就是密码了
所以这里的密码就是6ea280898e404bfabd0ebb702327b19f了
u1s1我真不知道这个有什么技巧
纯靠硬找
ad6269b7-3ce2-4ae8-b97f-f259515e7a91就是留存值
直接全部保存分析最大的包:
改成exe,然后用py分析:(地址:https://github.com/extremecoders-re/pyinstxtractor)
其中有一个2.pyc反编译后:
发现有图片,直接运行之后可以发现test.jpg
报错了没关系还是生成了
然后misc那一套该长度
第一眼以为是这个d00r.php
提交发现不对,所以就看哪里生成了这个d00r.php
就找,可以找到这个ViewMore.php
追踪d00r.php的HTTP数据包
有一个扫描的,上面有一个ipconfig
有好几个网卡
就是和nmap那个同一个网段就是192.168.162.130
最下面有这个数据包:
直接拷下来运行php
file_put_contents('k3y_f1le',base64_decode('UEsDBBQAAQAAANgDvlTRoSUSMAAAACQAAAAHAAAAa2V5LnR4dGYJZVtgRzdJtOnW1ycl/O/AJ0rmzwNXxqbCRUq2LQid0gO2yXaPBcc9baLIAwnQ71BLAQI/ABQAAQAAANgDvlTRoSUSMAAAACQAAAAHACQAAAAAAAAAIAAAAAAAAABrZXkudHh0CgAgAAAAAAABABgAOg7Zcnlz2AE6DtlyeXPYAfldXhh5c9gBUEsFBgAAAAABAAEAWQAAAFUAAAAAAA=='));
查看文件类型是zip,重命名为zip
打开发现需要密码
密码就在上面
打开就是flag
看ps aux
进程,有redis有nginx
把文件都脱下来发现redis-server有后门,但是说是php后门(D盾和DF都没扫出来病毒)
文件类型就是一个可执行的,没什么其他信息,主要是conf文件
里面有个池有个地址
发现确实是挖矿病毒
域名就是上面conf文件里面的donate.v2.xmrig.com
攻击者利用的方法这种题目,主要是看服务器有什么服务
就这题来说,有redis
,nginx
,javaweb
三大主流服务
redis是刚才的挖矿再考的概率低一点,可以放最后看
最可疑的就是nginx了,看一下nginx的日志:
发现是同一个ip大量爆破login页面,起初以为是弱口令,但是只访问了login页面,并没有访问其他页面,那就是shiro!!
还有一个javaweb
看一下他的日志
确定是shiro漏洞了
但是答案是啥…
是shirodeserialization
(没意思,叫shiro不好吗)
就是nginx日志里面频繁访问/login页面的那个ip
mozilla/5.0(compatible;baiduspider/2.0;+http://www.baidu.com/search/spider.html)
维持权限的配置文件
/etc/passwd
/etc/shadow
/etc/sudo
…
一大堆
一眼ssh
看一下没啥东西
接着看ssh
发现连接到klai的ssh里了
就是刚才的redis
自动开启redis挖矿也算