Catf1agCTF靶场 web swp
题目链接:http://catf1ag.cn/
个人博客:https://sword-blogs.com/
题目考点:
vim在编辑文档的过程中如果异常退出,会产生缓存文件
- vim 交换文件名
参考文章:vim手册
https://yianwillis.github.io/vimcdoc/doc/usr_11.html (中文)
https://vimdoc.sourceforge.net/htmldoc/usr_11.html (英文)
在使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除,当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容
后缀是区分这些交换文件的方法同一个文件产生的多个交换文件的后缀是不一样的
以 index.php 为例:第一次产生的交换文件名为 .index.php.swp
再次意外退出后,将会产生名为 .index.php.swo 的交换文件
第三次产生的交换文件则为 .index.php.swn
以s 开头 第二位由 uvw 组成 第三位a-z
使用vim -r
可以查看交换文件
使用 vim -r index.php
可以恢复交换文件
恢复之后需要删除交换文件·rm -rf .index.php.s*
要不然下次打开文件的是还是会有提示
解题思路
code1:
利用curl访问即可直接看到flag,因为vim使用的缓存存储为一种固定格式的二进制文件。而我们一般编辑的时明问可见字符,在vim的缓存中这些可见字符会原样保留
code2:
将缓存文件下载下来,使用vim编辑原有文件,例如下载的.index.php.swp,则说明之前编辑的文件名为index.php会提示是否恢复,选择R进行恢复即可看到原始内容
code:3
如果扩展名是 “.swp” 的文件已经存在,逐次递减最后的字母,直到找到没有现存文件的名字为止。如果过了 “.saa” 还找不到,不建立交换文件。
可以burp爆破所有可能性
解题方法
在浏览器url后面加上.index.php.swp
会自动下载交换文件
使用记事本打开可以看到flag 因为在vim的缓存中这些可见字符会原样保留
在Linux系统种使用vim -r index.php.swp
可以看到文件的完整内容
CTFhub的技能树中也有一道相同的题目 VIM缓存