Mayuri靶机
端口信息
先扫一下端口信息

开了2个web服务
http
先看看80端口
是一个查询价格的网站

输入数字编号会回显数据

试试输入别的东西看看回显情况

输入字母回显了报错信息
我们把报错信息给ai帮我们看看这是什么数据库

是cypher数据库
在网上搜一下有关这个数据库的注入方法
找到这篇文章写了有关cypher注入的内容

先丢了一个测试的payload
成功回显所以道具的价格
那么就可以确认确实有注入漏洞
这个时候我们别忘了再去看看那个8080端口web服务是干什么的

是一个登录框 猜测80端口可以爆出来我们想要的账号密码
回到80端口 爆出节点标签

确认节点标签有个User
那么直接爆这个节点的数据就行

最后得到账号密码
OOOkkkaaabbbeee:Okabe

登进去直接有命令行可以用了 直接弹shell登上去看看
ssh


成功登上去
home目录有个kyoma的账户
直接先读取user的flag 看看user.txt有没有读的权限

这里kyoma文件夹没法被读取 但是可以被执行 文件也刚好可以被读
这里刚好就直接读出来了 也是比较凑巧的
root
经过一顿翻找并没有什么可用的东西
最后在环境变量中找到疑似密码的数字

根据之前web网页上面的内容可以知道这个靶机neta了命运石之门
看过命运石之门的都知道1.129848这个数值就是世界线变动率
其实没看过的话 pass这个也应该想到可能是password
我们用这个密码登上去试试

成功登录kyoma的账号
我们看看有没有可以用的命令

并没有可以用的命令
我们再去找找有suid的命令

发现叫TimeMachine的程序有suid 还就在home目录下
其home目录下还有邮件

邮件内容提示我们要去使用时间机器

使用完之后一开始并没有什么特别的变化
多次使用后发现那个时间戳一直和真实时间是同步的
猜测可能调用了什么命令
把TimeMachine拿到ida里面看看

发现在这个函数里面有调用一个命令

调用了timedatectl这个命名
那么提权思路就清楚了
我们构造一个同名的timedatectl命令 但是实际上是bash 然后把这个同名的timedatectl命令的路径的优先级排到最前面 使得我们自己构造的同名的timedatectl命令被优先执行
直接写一个shell脚本拿root

在改一下这个shell脚本的权限然后执行就可以拿到root了

这里的shell是个哑shell 没有交互 但是没有大碍

最后拿到root的flag
关于环境变量提权
主要来自于这篇文章
命名的执行是根据环境变量中的目录去寻找命令的
简单来说通过环境变量去提权 就是劫持命令 去执行我们自己构造的同名命令
从而提权
当然前提是这个最开始执行的命令是有suid的
suid
是一种linux中特殊权限
允许命令可以暂时以特殊权限去执行此命令
可以通过
find / -type f -perm -4000 2>/dev/null
来寻找这类命令
说些什么吧!