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

CatFlag 原理

今天我们来讲讲原理性的东西......

解题思路

这道题等级这么低,但是当时我将其复杂化了,其实想要做出答案很简单,只需要将文件拖进Linux里,根据提示,直接cat flag就好了

得到flag:CatCTF{!2023_Will_Be_Special,2022_Was_Not!}

cat 命令

在linux中cat命令是用来查看文件内容的,命令格式为 cat 文件名,刚好这题的附件名就叫flag

我的疑问

不过,通常cat是文件中写入什么字符串,就读取什么字符,比如我vi / nano / vim一个文件file,写入abc,cat file后就回显abc

当我查看文件后,发现不简单,这都啥跟啥?别样的加密?多番查询无果,我开始查找网上的wp

原理

网上的说法

假设flag文件内容为 “正常文本 \x1b[C 向右移动后的文本”

当你在终端使用 cat flag 命令时,终端首先会显示 “正常文本”,然后遇到 \x1b[C 这个ASCII转义序列。终端理解这个序列的意思是将光标向右移动,接着就会在刚才“正常文本”的右侧显示“向右移动后的文本”。

涉及知识点

ASCII转义字符:用于控制光标的移动。例如,\x1b[C 表示光标向右移动,\x1b[D 表示光标向左移动,\x1b[A 表示光标向上移动,\x1b[B 表示光标向下移动‌

我的理解

实际上就是cat命令从上到下,从左到右顺序读取,而ASCII转义序列则决定了转义序列右侧的文本显示在左侧文本的哪一个方位

实际案例

假如 flag 文件内容为:“Start\x1b[BEnd”。

当执行 cat flag 命令时,终端先显示“Start”,遇到 \x1b[B 这个 ASCII 转义序列,它表示光标向下移动。此时光标会移动到下一行,然后显示“End”。

最终在终端上呈现的效果是:

“Start”

“End”

看起来就像是“End”从“Start”的下方滑出。

http://www.dtcms.com/a/80469.html

相关文章:

  • 密码学(Public-Key Cryptography and Discrete Logarithms)
  • Docker 部署 XXL-JOB
  • 粘包半包以及Netty的解决办法
  • HCITool 的详细介绍、安装指南及使用说明
  • 合批Batching
  • MySQL 中利用 mysql.help_topic 实现行转列的深入剖析
  • 物理标签与逻辑标签的区别
  • 第七节 MATLAB数据类型
  • Pytorch使用手册—自定义 C++ 和 CUDA 扩展(专题五十二)
  • Altium Design元件管理笔记
  • PolyBench基准程序详解:编译器优化评测指标
  • IDEA 出现 Cannot access aliyunmaven in offline mode 问题解决方案
  • 【愚公系列】《高效使用DeepSeek》020-专业术语解释
  • 脚本语言 Lua
  • K8S学习之基础四十:K8S配置altermanager发送告警到钉钉群
  • 在麒麟系统(基于Ubuntu或Debuntu)的离线环境中创建本地APT仓库
  • 基于django美团美食销售数据分析与可视化系统设计与实现(源码+lw+部署文档+讲解),源码可白嫖!
  • Redis 本地安装
  • 【Kafka】深入了解Kafka
  • 【文章写作】以数字素养筑基,绘治理现代化蓝图
  • CSS 用于图片的样式属性
  • STM32-汇编2、外设
  • EasyRTC嵌入式音视频通话SDK:微信生态支持、轻量化架构与跨平台兼容性(Linix/Windows/ARM/Android/iOS/LiteOS)
  • HarmonyOS 开发中条件渲染的选择:if/else 与取反操作的对比与实践
  • Chapter 4-16. Troubleshooting Congestion in Fibre Channel Fabrics
  • AcWing 838:堆排序 ← 数组模拟
  • (C语言)递归求整数的二进制(递归求法)(C语言教学)
  • VSCode创建VUE项目(三)使用axios调用后台服务
  • Android自动化测试终极指南:从单元到性能全覆盖!
  • [免费]SpringBoot+Vue城市交通管理系统【论文+源码+SQL脚本】