您的位置:首页 > 其它

dos中特殊符号命令的应用

2016-10-12 16:39 218 查看
0×01缘由

0x02dos中双引号含义

0×03双引号的用法

0x04DOS中其他特殊符号

0×05附录

 

0×01缘由

 

昨天看见一贴记一次无聊的过程

有几个机油回帖询问文件幻数检测和双引号包含的问题,晴天大牛未予以解释。

这里就简单介绍下~~

 

0x02dos中双引号含义

 

DOS中双引号”"是字符串界定符,这在批处理中常用到。但是dos中属于特殊命令字符。

双引号允许在字符串中包含空格,进入一个特殊目录可以用如下方法

 

cd “program files” 

cd progra~1 

cd pro* 

 

 

以上三种方法都可以进入program files这个目录

下面是其他的用法:

在表示带有空格的路径时常要用”"符号;

来将路径括起来,在一些命令里面也需要” “符号;

在for/f中将表示它们包含的内容当作字符串分析;

在for/f “usebackq”表示它们包含的内容当作文件路径并分析其文件的内容;

在其它情况下表示其中的内容是一个完整的字符串,其中的>、>>、<、&、|、空格等不再转义。

 

0×03双引号的用法

 

可以这样执行cmd命令但是执行提权exp时依然会访问拒绝。

 

一是、直接上传自动提权加帐号的exp(免参数exp),设置终端路径为exp路径。

在执行命令那儿随意敲个字母,执行。就可以顺利执行exp。

 

二是、利用双引号包含突破监控软件

 

“”"c:\php\tmp\p.txt” “ver”"” 

 

 

下面介绍同学们常常遇到空格路径无法执行的情况。

现在知道双引号包含就很简单,直接

 

“”"C:\Documents and Settings\All Users\Application Data\Microsoft\p.txt” “ver”"” 

 

 

当然我常用的突破方法(为了是执行多个exp的方便)是:

执行exp时(C:\Documents and Settings\All Users\Application Data\Microsoft\)

会出现这样的情况:

 

‘C:\Documents’ 不是内部或外部命令,也不是可运行的程序或批处理文件。 

 

 

解决办法是利用菜刀的交互shell切换到exp路径,如:

 

Cd C:\Documents and Settings\All Users\Application Data\Microsoft 

 

 

当然如果无法跳转的话,利用双引号包含。

 

Cd “C:\Documents and Settings\All Users\Application Data\Microsoft” 

 

 

然后再执行exp或者cmd,就不会存在上面的情况了,aspshell一般是无法跳转目录的~~

看图:



这个在【科普】windows虚拟主机提权手册中有所介绍。

 

0x04DOS中其他特殊符号

这些特殊符号想必机油们或多或少都遇到过,渗透中会起到强大的作用。

DOS中其他特殊符号(批处理常用):

 

@

\\隐藏命令的回显。

 

~

\\在for中表示使用增强的变量扩展;

在set中表示使用扩展环境变量指定位置的字符串;

在set/a中表示按位取反。

 

%

\\使用两个%包含一个字符串表示引用环境变量。比如一个%time%可以扩展到当前的系统时间;

单个%紧跟0-9的一个数字表示引用命令行参数;

用于for中表示引用循环变量;

连续的两个%表示执行时脱为一个%。

 

^

\\取消转义字符,即将所有转义字符的转义作用关闭。

比如要在屏幕显示一些特殊的字符,比如> >> | ^等时,

就可以在其前面加一个^符号来显示这个^后面的字符了,^^就是显示一个^,^|就是显示一个|字符了;

在set/a中是按位异;

在findstr/r的[]中表示不匹配指定的字符集。

 

&

\\命令连接字符。比如我要在一行文本上同时执行两个命令,就可以用&命令连接这两个命令;

在set/a中是按位与。

 

*

\\代表任意个任意字符,就是我们通常所说的”通配符”;

比如想在c盘的根目录查找c盘根目录里所有的文本文件(.txt),那么就可以输入命令”dir c:\*.txt”;

在set/a中是乘法。比如”set/a x=4*2″,得到的结果是8;

在findstr/r中表示将前一个字符多次匹配。

 

()

\\命令包含或者是具有优先权的界定符吧,比如for命令要用到这个(),我们还可以在if,echo等命令中见到它的身影;

 

-

\\范围表示符,比如日期的查找,for命令里的tokens操作中就可以用到这个字符;

在findstr/r中连接两个字符表示匹配范围;

-跟在某些命令的/后表示取反向的开关。

 

+

\\主要是在copy命令里面会用到它,表示将很多个文件合并为一个文件,就要用到这个+字符了;

在set/a中是加法。

 

|

\\管道符。就是将上一个命令的输出,作为下一个命令的输入.”dir /a/b | more”就可以逐屏的显示dir命令所输出的信息;

在set/a中是按位或;

在帮助文档中表示其前后两个开关、选项或参数是二选一的。

 

:

\\标签定位符,可以接受goto命令所指向的标签。比如在批处理文件里面定义了一个”:begin”标签,用”goto begin”命令就可以转到”:begin”变迁后面来执行批处理命令了。

 

/

\\表示其后的字符(串)是命令的功能开关(选项)。比如”dir /s/b/a-d”表示”dir”命令指定的不同的参数;

在set/a中表示除法。

 

>

\\命令重定向符,将其前面的命令的输出结果重新定向到其后面的设备中去,后面的设备中的内容被覆盖。

比如可以用”dir > lxmxn.txt”将”dir”命令的结果输出到”lxmxn.txt”这个文本文件中去;

在findstr/r中表示匹配单词的右边界,需要配合转义字符\使用。

 

>>

\\命令重定向符。将其前面的命令的输出结果重新定向到其后面的设备中去,后面设备中的内容没有被覆盖。

 

<

\\将其后面的文件的内容作为其前面命令的输入。

在findstr/r中表示匹配单词的左边界,需要配合转义字符\使用。

 

=

\\赋值符号,用于变量的赋值。比如”set a=windows”的意思意思是将”windows”这个字符串赋给变量”a”;

在set/a中表示算术运算,比如”set /a x=5-6*5″。

 

\

\\这个”\”符号在有的情况下,代表的是当前路径的根目录.比如当前目录在c:\windows\system32下,那么你”dir \”的话,就相当与”dir c:\”

在findstr/r中表示正则转义字符。

 



在for/f中表示将它们包含的内容当作命令行执行并分析其输出;

在for/f “usebackq”中表示将它们包含的字符串当作字符串分析。

 

.

\\

在路径的\后紧跟或者单独出现时:

一个.表示当前目录;

两个.表示上一级目录;

在路径中的文件名中出现时:

最后的一个.表示主文件名与扩展文件名的分隔。

 

&&

\\连接两个命令,当&&前的命令成功时,才执行&&后的命令;

 

||

\\连接两个命令,当||前的命令失败时,才执行||后的命令。

 

$

\\在findstr命令里面表示一行的结束。

 



在for/f中表示它们所包含的内容当作命令行执行并分析它的输出。

 

[]

在帮助文档表示其中的开关、选项或参数是可选的;

在findstr/r中表示按其中指定的字符集匹配。

 

?

\\在findstr/r中表示在此位置匹配一个任意字符;

?在路径中表示在此位置通配任意一个字符;

紧跟在/后表示获取命令的帮助文档。

 

!

\\当启用变量延迟时,使用!!将变量名扩起来表示对变量值的引用;

在set /a中表示逻辑非。比如set /a a=!0,这时a就表示逻辑1。

 

0×05附录

 

其实除了这些特殊符号,还有很多命令都值得掌握,比如for命令。

很多人都认为for命令只能在低权限下查看文件目录下的文件夹。

 

for /d %i in (d:\www\web\*) do @echo %i 

 

 

其实它还有很多用法。如果运用起来效果极佳。

 

for /r d:\wwwroot\web\ %i in (*.asp) do @echo %i >>c:\windows\temp\1.txt 

——这个是把 d:\wwwroot\web\目录所有asp文件 列出来 ,然后保存在c:\windows\temp\下的1.txt 

for /d %i in (d:\wwwroot\web\*) do @echo %i 

——这句是显示d:\wwwroot\web 下所有文件,包括文件夹。 

for /r d:\wwwroot\web\ %i in (*.*) do @echo %i >>d:\wwwroot\web1\1.txt 

——*.* DOS下是所有的意思 也就是说显示d:\wwwroot\web1\所有文件,然后保存在d:\wwwroot\web1\1.txt 

*.*为任意后缀名,如果改成(*.exe)会把目录与下面的子目录的全部EXE文件列出 

for /f %c in (d:\wwwroot\web\coon.asp) do @echo %c 

——查看coon.ASP文件内容 

for /d %i in (???) do @echo %i 

——把当前路径下文件夹的名字只有1-3个字母的打出来 

type F:\VIP\qq1369\database\#Collection.resx echo >>c:\windows\temp\1.mdb 

——通过for或者type读取对方的数据库配置文件,但数据库修改了后缀名,例如为.resx 

使我们不能下载,这时用type命令把数据库复制到c:\windows\temp\下面,然后下载! 

/c  for /r F:\VIP\qq1369 %i in (*) do @echo %i    列出所有F:\VIP\qq1369文件 

 

 

甚至在系统权限下:

 

For /F “tokens=2,3*” %i in (‘tasklist /nh ^| find “lsass.exe”‘) do ntsd -c q -p %iFor /F “tokens=2,3*” %i in (‘tasklist /nh ^| find “lsass.exe”‘) do ntsd -c q -p %i 

普通级别强杀“lsass.exe”进程。 

For /f “tokens=1,2″ %%i in (‘tasklist’) do (echo %%i | findstr /i “stormliv.exe” 1>nul 2>nul && (ntsd -c q -p %%j & set qq=%%i)) 

驱动级强行杀死所有名为“stormliv.exe”的进程(可以干掉网维等产品)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dos