[LitCTF 2023]Vim yyds
点开后页面内容如图:
接着我们搜索一下vim相关的知识:
vim -r filename 恢复上次 vim 打开时崩溃的文件
vim -R filename 把指定的文件以只读方式放入 Vim 编辑器中
vi +/pattern filename 打幵文件,并将光标置于第一个与 pattern 匹配的位置
由于题目中描述的有源码泄露,我们打开kali linux 用dirsearch 扫描一下目录:
命令如下:
dirsearch -u "http://node4.anna.nssctf.cn:28588/"
我们发现有一个 .index.php.swp 的文件,这里对.swp文件做一下简要介绍:
.swp 文件是一种由许多文本编辑器和开发工具生成的临时交换文件。
其主要用途是在编辑过程中作为一种备份和恢复机制。例如,当您正在使用某个文本编辑器编辑一个文件时,如果突然出现系统故障、软件崩溃或者意外断电等情况,编辑器可以利用 .swp 文件来恢复您未保存的工作进度。
然后我们下载该文件,然后将该文件拖入到kali linux 的桌面上,然后我们在kali linux 的空白处点击右键,选择在桌面打开终端,然后我们执行如下命令,用于恢复文件,得到index.php文件的源码。
vim -r index.php.swp
按enter键后:
接着我们对php代码进行分析,从if语句中我们知道,当传入的password参数的值等于"Give_Me_Your_Flag"base64加密后的值时,可以通过cmd参数进行命令执行。我们用base64在线编码工具对Give_Me_Your_Flag进行在线编码得到:R2l2ZV9NZV9Zb3VyX0ZsYWc=
我们接着打开HackBar 加载URL并尝试使用POST传参传递参数进行命令执行。
接着我们执行以下命令,找到了flag:
password=R2l2ZV9NZV9Zb3VyX0ZsYWc=&cmd=ls /
接着我们执行以下命令查看flag:
password=R2l2ZV9NZV9Zb3VyX0ZsYWc=&cmd=cat /flag
由此可得本题flag为:NSSCTF{766a68b2-b70c-4524-8eb3-da6b7ad1ae9a}