type
Post
status
Published
date
Jan 2, 2024
summary
本文介绍了在服务器入侵过程中发现隐藏字符的原理。通过使用命令如
cat -A,可以查看隐藏字符,其中包括转换为\\r的^M字符,它表示回车并可能导致内容覆盖。文章提供了示例和注意事项,并给出了参考文章和作者信息。tags
Hacking
category
Collections
password
slug
icon
一、文章起源
二、细讲问题

文件内容为何显示不了,究竟是什么东西在作怪,让我们一探究竟。
为了让大家也可以一起了解下, 文件我放到
阿里云oss 上, 有兴趣的可以下载下来看下。 隐藏文件内容示例2.1、 文件在不同环境下的不同编译器打开的显示情况
Linux 通过 cat/more 打开
Linux 通过 vim 打开
Notepad++ 显示所有字符模式打开
开始自己网上查了一下, 没有查到原因。凭借着做多年运维解决问题的经验,已经对问题的那种直觉感, 总觉得应该是
;^M(我装到了)。三、 借助场外资源
为了一探究竟,特意叫一个朋友拉我进了一个安全群,在群里询问下安全大佬。
3.1、双向文本(Bidirectional tex)
在安全群里问了一下,有位大佬提了一句 双向文本方向。 我都没有听说过这个东西。 双向文本到底是啥,科普下:双向文本就是一个字符串里面,包含了两种文字,既包含从左到右的文字,又包含从右向左的文字。
示例1:
文本中是
而显示实际是
示例2:
文本中是
而实际上显示的是
示例3:
代码显示内容为

实际执行的内容是

细看,这好像跟我们的场景还是不一样。 这个只是调换文字的顺序。饭可以乱吃,路不能乱走啊,得走正道。 继续瞅瞅。
3.2、 看看^M
有另外一个大佬说出来了一个问题, 所有的问题原因是 跟
^M 有关。大佬说到
^M 是回车换行符。 cat 带有^M的一行字符串时,屏幕上会把 ^M 之后的内容在同一行换行后输出,这样就会覆盖掉^M之前的内容,导致你看到的这个内容效果。我产生了疑问,
^M 是回车换行符, 这个有依据吗? 在下面有解释。先不管这个,我们先测试一波。
示例一
示例二
示例三
通过上面的示例,我们可以知道,
^M 后面的内容会覆盖 ^M 前面的内容, 入侵者就是利用这个原理,在 ^M 后面打了很多个空格覆盖掉前面实际定时任务的内容。 哎,这入侵者真是个人才。
3.3、真相大白
前面我产生了疑问,
^M 是回车换行符, 这个有依据吗? 我该怎么去查看这cat 命令把这个 ^M 给识别成啥了?在憋了几天之后,终于想到了一个大器(
strace)。 有点相见恨晚的感觉。
我们注意看,
read 这里的内容。我们发现
^M 在 cat 命令执行过程中,转换为 \r , 那么 \r 又是什么? 接下来需要去翻阅 新华字典了。
\r : 回车符(carriage ret), 对应ASCII值13(缩写:CR)。 它的含义是什么: 回车 (控制字元)。

那我们前面通过
notepad++ 打开的线上的 CR 是不是就对上了。
最终我们可以得出一个初步结论, 也就是:
- 在 Linux Vim 中打印出来的
^Mcat 等一些命令会转换为\r,\r也就是回车 在Linux、unix中 表示它將光标返回到行首。\r之后的内容也就会覆盖前面的内容。
四、注意
- 以后服务器如果入侵了,建议我们使用
cat -A命令来查看。这样一些隐藏字符就可以看到了。

作者:理想三旬
本人承接各种项目维护和python项目开发, 如果觉得文章写得不错,或者帮助到您了,请点个赞,加个关注哦。运维学习交流群:544692191
本文版权归作者所有,欢迎转载,如果文章有写的不足的地方,或者是写得错误的地方,请你一定要指出,因为这样不光是对我写文章的一种促进,也是一份对后面看此文章的人的责任。谢谢。
- Author:Netsec
- URL:https://blog.51sec.org/article/73956101-8152-4ee4-a8cd-dc17a99ee988
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!