我注意到cmd似乎接受命令末尾的一些字符。 例如以下所有function都正确:
cls. cls; cls( cls\ cls+ cls= cls\"whatever" cls\$ cls\#
而这些不:
cls' cls$ cls) cls- cls# cls\/
有人知道为什么会发生这种情况吗?
提前致谢。
这取决于批解析器。
;,=
是一般的批量分隔符,所以你可以将它们附加到最前面的命令中而不起作用。
;,,= ,=; echo hello ;,cls,;,,
的.
点可以被追加到最多的命令,因为解析器将尝试找到一个名为cls
(没有扩展名)的文件cls.exe
cls.bat
,当没有发现任何东西时,它采取内部命令。
左括号也是解析器无误地移除的特殊字符。
\
反斜杠用作路径分隔符,所以有时候它可以工作,但有时甚至可以改变命令。
cls\..\..\..\windows\system32\calc.exe