有时当我cat
错误地输入二进制文件时,我的终端会出现乱码。没有什么是快速reset
解决不了的,但理论上攻击者不能创建一个文件,当在终端上显示时,它会执行一些任意代码吗?通过终端模拟器中的漏洞利用或其他方式。
我有一个简单的问题。
bash(我使用的是 4.4.11)不显示分隔/以纯文本结尾的行/文本是否正常\r
?
看到这种行为,我有点惊讶:
$ a=$(printf "hello\ragain\rgeorge\r\n")
$ echo "$a"
george
Run Code Online (Sandbox Code Playgroud)
但是“你好再次”文本仍然存在,不知何故“隐藏”:
$ echo "$a" |od -w32 -t x1c
0000000 68 65 6c 6c 6f 0d 61 67 61 69 6e 0d 67 65 6f 72 67 65 0d 0a
h e l l o \r a g a i n \r g e o r g e \r \n
Run Code Online (Sandbox Code Playgroud)
只要我们玩 bash 就可以了……但这是否存在潜在的安全风险?如果变量“a”的内容来自外部世界并包含“坏命令”而不是“你好”怎么办?
另一个测试,这次有点不安全:
$ a=$(printf "ls;\rGeorge\n")
$ echo "$a"
George
$ eval "$a"
0 awkprof.out event-tester.log helloworld.c …
Run Code Online (Sandbox Code Playgroud) 在我遇到的许多 Linux 发行版中,将文本粘贴到 shell 时会包含退格字符。为什么不阻止粘贴这些字符——或者这个特性是否提供了一些有用的功能?
换句话说,Linux shell 是否“知道”它是粘贴的字符串——还是手动输入的?
这种行为如何处理?