当前位置: 首页 > 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”的下方滑出。

相关文章:

  • 密码学(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
  • 【文章写作】以数字素养筑基,绘治理现代化蓝图
  • 陕西旱情实探:大型灌区农业供水有保障,大旱之年无旱象
  • 江西贵溪:铜板上雕出的国潮美学
  • 马上评|“为偶像正名”的正确做法是什么
  • 美政府以拨款为要挟胁迫各州服从移民政策,20个州联合起诉
  • 法治课|争议中的“行人安全距离”于法无据,考量“注意义务”才更合理
  • 牧原股份子公司与养殖户种猪买卖纠纷案一审胜诉