靶机介绍
首先进入靶机,得到以下线索:
1 | 这该死的黑客为了拿到flag,把环境破环成这个鬼样子啦。 |
通过这些线索,我们得知了黑客使用了root权限,并且该靶机是禅知1.6版本。但是我们还需要更多的信息来进行推理和查找。
禅知1.6介绍
我们需要先了解一下禅知1.6是什么,它是一款企业级开源知识管理系统,提供集中式的知识管理平台,支持多语言、多平台,具有高度的可扩展性和灵活性,方便员工共享知识和信息,提高工作效率和协作效果。
禅知1.6的漏洞
根据题目给出的线索,我们知道禅知1.6存在一个BUG,可以在前台任意文件读取。而file主要用于上传和管理文件,用户可以在任务、需求、Bug等模块中上传相关的文件,方便团队成员查看和下载。同时,管理员可以在文件管理模块中对上传的文件进行管理,包括删除、重命名、移动等操作。因此,我们可以在靶机地址上输入https:xxxxxx.com/file.php
查看文件,但是发现file被删除了。
文件查找
我们需要在禅知1.6的根目录下找到config.php文件,因为大部分的软件配置文件几乎都是config的方式命名。但是我们发现直接修改https:xxxxxx.com/file.php?pathname=../config.php&t=txt&o=source
没有任何文件返回,说明这个目录下没有这个文件,有的软件为了文件管理会创建一个叫做config的文件夹,再将config文件放入。因此,我们需要修改https:xxxxxx.com/file.php?pathname=../system/config/config.php&t=php&o=source
,这时得到了config的配置。
- 问号(?)表示查询字符串的开始。
- pathname参数则是告诉服务器需要访问的文件路径。
- ../file.php表示需要访问file.php的上一级目录,也就是禅知1.6的根目录。
- t=txt 表示文件类型为 txt,即该文件是一个纯文本文件。
- o=source 表示输出方式为 source,即该文件以源代码格式输出。
查找账号和密码
我们需要读取my.php来获取账号和密码,因为my.php存放账号和密码。我们直接修改https:xxxxxx.com/file.php?pathname=../system/config/my.php&t=php&o=source
,得到账号和密码都是root。
查找命令历史
题目给出提示为命令历史,因此我们需要寻找命令历史的位置。根据Chatgpt的回答,命令历史上一级地址一般都是home目录或者用户。因此,我们已知用户是root,那么payload就可能是root/.bash_history。我们直接修改https:xxxxxx.com/file.php?pathname=../../root/.bash_history&t=php&o=source
,发现没有任何东西,根据Chatgpt的回答,在Linux中,使用“..”表示返回上一级目录,使用“../..”表示返回上两级目录,以此类推。即使已经返回到最顶层目录,输入“../”也不会出错,只是会保持当前目录不变。因此,我们需要再加一个../,即https:xxxxxx.com/file.php?pathname=../../../root/.bash_history&t=php&o=source
,这时得到了关键线索。
查找flag
我们已经得到了命令历史,从cat flllllllllllllllll1ag
得知flag的文件名叫flllllllllllllllll1ag,直接在payload构建并打开https:xxxxxx.com/file.php?pathname=../../flllllllllllllllll1ag&t=php&o=source
,这时flag就拿到了。
得到flag
最终我们得到了flag:DASCTF{23056658435594732796840259987780}。