Secrets in Shadow

题目描述:

隐藏于阴影之中,会是什么呢
使用ssh连接端口,用户为”ctf”,密码为”ctf”

ssh连上,一手ls,然后cat flag,发现权限不够,开始提权,正好这周学了提权嘿嘿,强推tryhackme

由标题可以联想到/etc/shadow文件,用于存储 Linux 系统中用户的密码信息,/etc/passwd 文件,由于该文件允许所有用户读取,易导致用户密码泄露,因此 Linux 系统将用户的密码信息从 /etc/passwd 文件中分离出来,并单独放到了此文件中。

访问一下,ohhh,有权限访问,那就开始爆破密码

首先把/etc/passwd/etc/shadow文件内容复制到自己的kali,因为目标机没有相关环境嘛

然后使用unshadow工具把密码信息转化成可被攻击的信息文件

1
unshadow passwd shadow > mypasswd

接着用john工具暴力破解即可

1
john mypasswd

过几秒就得到了root用户的密码,然后ssh连上读flag内容即可

1
cat /home/ctf/flag

strange python

好欸,有一个python shell,但是怎么感觉怪怪的

看到这道题就让我想起来HNCTF2022里空白✌(Crazyman)出的的pyjail逃逸套题,tql

然后我就去春哥的博客里找能不能做的思路

首先看起来就是一个python的shell,没看出什么特别的,那就为了方便,用命令行正常拿flag试试看

1
__import__('os').system('sh')

shell很正常的出来了,然后我就找了半天flag在哪,既然不好找,那就康康docker的部署命令怎么写的吧

这下发现哩,在/opt/python/preload.py里放着,直接cat读取是读不到的,因为权限不够,Linux提权的手法我学过的sudo、suid这些都试了试,不太行

那就浅浅试试dir()康康有啥好东西,发现__flag__读出来是打乱的flag,怎么重组起来呢,可以发现除此之外还有randomseed以及shuffleseed可以获取到是114514,那这里shuffle随机排列的也就是伪随机了,开始复原

可以发现列表的元素都是两个两个的字符,那就开始写个逆向脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import random
from random import shuffle

random.seed(114514)
flag=['77', '6d', 'c5', 'SC', '-4', 'f-', '18', '5a', '5a', 'NS', '80', '5e', '1}', 'TF', '-a', '90', 'b6', '88', 'c5', 'c2', '{6', '4-']

length = len(flag)
list1 = []
for i in range(length):
list1.append(str(i))
print(list1)
shuffle(list1)
list2 = list1
print(list2)
result = ""
for i in range(length):
index = list2.index(str(i))
result += flag[index]
print(result)

方法二:除此之外还可以执行open()获得flag,因为我们已知flag的路径

1
open('/opt/python/preload.py').read()

ability

题目描述:

能力越大,越危险
使用ssh连接端口,用户为”ctf”,密码为”ctf”

由题目描述联想到Capabilities提权,直接getcap -r / 2>/dev/null搜索可利用的二进制可执行文件,发现dig命令,可以在GTFOBins查找到这个命令可读取文件内容,直接dig -f flag即出flag

本文采用CC-BY-SA-3.0协议,转载请注明出处
Author: ph0ebus