当前位置: 首页 > news >正文

vim缓存-交换文件

Catf1agCTF靶场 web swp

题目链接:http://catf1ag.cn/

个人博客:https://sword-blogs.com/image-20230918190228337

题目考点:

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

image-20230918193151735

以s 开头 第二位由 uvw 组成 第三位a-z

使用vim -r可以查看交换文件

image-20230918192600832

使用 vim -r index.php可以恢复交换文件

image-20230918192149399

image-20230918192751943

image-20230918192814048

恢复之后需要删除交换文件·rm -rf .index.php.s*要不然下次打开文件的是还是会有提示

image-20230918192923844

解题思路

code1:

利用curl访问即可直接看到flag,因为vim使用的缓存存储为一种固定格式的二进制文件。而我们一般编辑的时明问可见字符,在vim的缓存中这些可见字符会原样保留

code2:

将缓存文件下载下来,使用vim编辑原有文件,例如下载的.index.php.swp,则说明之前编辑的文件名为index.php会提示是否恢复,选择R进行恢复即可看到原始内容

code:3

如果扩展名是 “.swp” 的文件已经存在,逐次递减最后的字母,直到找到没有现存文件的名字为止。如果过了 “.saa” 还找不到,不建立交换文件。

可以burp爆破所有可能性

image-20230918195046850

解题方法

在浏览器url后面加上.index.php.swp会自动下载交换文件

image-20230918195506384

使用记事本打开可以看到flag 因为在vim的缓存中这些可见字符会原样保留

image-20230918195624559

在Linux系统种使用vim -r index.php.swp可以看到文件的完整内容

image-20230918195822005

image-20230918195731331

CTFhub的技能树中也有一道相同的题目 VIM缓存

image-20230918195943341

http://www.lryc.cn/news/171359.html

相关文章:

  • Hive 优化建议与策略
  • CentOS 7.5 centos failed to load selinux policy 错误解决方法
  • 注入之SQLMAP(工具注入)
  • Linux学习资源Index
  • 什么是SVG(可缩放矢量图形)?它与普通图像格式有何不同?
  • 求生之路2服务器搭建插件安装及详细的游戏参数配置教程windows
  • React TypeScript 定义组件的各种方式
  • 互联网摸鱼日报(2023-09-20)
  • AWS入列CNCF基金会
  • 岭回归与LASSO回归:解析两大经典线性回归方法
  • 数学建模——微分方程介绍
  • Minio入门系列【7】Spring Boot集成Minio
  • 抖音视频下载.py(23年9月份可用)
  • 项目基本搭建流程
  • 学习pytorch11 神经网络-非线性激活
  • Jenkins学习笔记2
  • 自动化测试:yaml结合ddt实现数据驱动!
  • 高效管理,轻松追踪——Chrono Plus for Mac任务管理工具
  • python项目2to3方案预研
  • MongoDB 是什么和使用场景概述(技术选型)
  • 打印 pyspark.sql.dataframe.DataFrame 有哪些列
  • 什么是虚拟DOM(Virtual DOM)?它在前端框架中的作用是什么?
  • QT实现简易时钟
  • win禁用更新,取消windows更新提示,禁用windows自动更新
  • 倒计时列表实现(小程序端Vue)
  • ContentType:application/x-www-form-urlencoded请求方法遇到的坑【PHP】
  • RabbitMQ - 死信、TTL原理、延迟队列安装和配置
  • 大数据与云计算实验一
  • 实施主品牌进化战略(一):确立主品牌进化架构
  • linux搭建单机ES,集成ik分词器,文本抽取,Kibana可视化平台