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,怎么重组起来呢,可以发现除此之外还有random
和seed
以及shuffle
,seed
可以获取到是114514,那这里shuffle随机排列的也就是伪随机了,开始复原
可以发现列表的元素都是两个两个的字符,那就开始写个逆向脚本
1 | import random |
方法二:除此之外还可以执行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