windows命令执行的几种绕过方法

windows命令执行的几种绕过方法

  • 介绍
    • 1、添加特殊符号
    • 2、定义变量
    • 3、切割字符串
    • 4、逻辑运算符在绕过中的作用
    • 5、利用for循环拼接命令

介绍

反检测、反清理,是红队攻击中的重中之重,本文详细描述了几种windows执行命令的几种绕过手法。

1、添加特殊符号

whoami					//正常执行
w"h"o"a"m"i			    //正常执行
w"h"o"a"m"i"		    //正常执行
wh"“oami 				//正常执行
wh”“o^am"i				//正常执行
((((Whoam”"i))))		//正常执行

执行如下图所示:
windows命令执行的几种绕过方法_第1张图片
甚至可以加无数个”但不能同时连续加2个符号,因为号是cmd中的转义符,跟在他后面的符号会被转义

w""""""""""""“hoami //正常执行
w”"""""""""""“hoa^m”“i //正常执行
w”"""""""""""“hoa^^m”"i //执行错误

2、定义变量

set a=net user  //设置变量a,值为1
echo a  		//此时输出结果为"a"
echo %a%		//此时输出结果为net user

windows命令执行的几种绕过方法_第2张图片

set a=net u              //设置变量a,值
set b=ser         		 //此时输出结果为"a"
echo %a%%b%   		     //此时输出结果为net user

windows命令执行的几种绕过方法_第3张图片

3、切割字符串

这个方法是最实用,实战中,经常会遇到屏蔽某个字符串的输入,或者限制输入危险字符,可以经常用到的
原理是对字符进行切割

%a:~0% //取出a的值中的所有字符
此时正常执行whoami
%a:~0,6% //取出a的值,从第0个位置开始,取6个值    
Set a=whoamiqweweasd    //定义变量
%a:~0,6%     		    //输出结果为whoami  

在这里插入图片描述

如果屏蔽了空格
net%CommonProgramFiles:~10,1%user
                                                                                         
CommonProgramFiles=C:\Program Files\Common Files
从CommonProgramFiles这个变量中截取

直接执行

net%CommonProgramFiles:~10,1%user

windows命令执行的几种绕过方法_第4张图片

4、逻辑运算符在绕过中的作用

继续往下,相信所有人都知道,|在cmd中,可以连接命令,且只会执行后面那条命令

whoami | ping www.baidu.com
ping www.baidu.com | wh""oam^I //两条命令都只会执行后面的

在这里插入图片描述

||   符号,只有在前面命令失败,才会执行后面的语句                   
&    符号,前面的命令可以成功也可以失败,都会执行后面的命令
&&   符号  就必须两条命令都为真才可以

5、利用for循环拼接命令

该命令表示以增量形式从开始到结束的一个数字序列。
使用迭代变量设置起始值(start).
然后逐步执行一组范围的值,直到该值超过所设置的终止值 (end)。
/L 将通过对start与end进行比较来执行迭代变量。
如果start小于end,就会执行该命令,否则命令解释程序退出此循环。
还可以使用负的 step以递减数值的方式逐步执行此范围内的值。

例如
(1,1,5) 生成序列 1 2 3 4 5,
而 (5,-1,1) 则生成序列 (5 4 3 2 1)。
命令

cmd /C "for /L %i in (1,1,5) do start cmd"

会执行打开5个cmd窗口。
windows命令执行的几种绕过方法_第5张图片执行whoami命令

cmd /c "for /L %i in (1,1,1) do whoami"

在这里插入图片描述/F参数: 是最强大的命令,用来处理文件和一些命令的输出结果。

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

(file-set) 为文件名,for会依次将file-set中的文件打开,并且在进行到下一个文件之前将每
个文件读取到内存,按照每一行分成一个一个的元素,忽略空白行。

(“string”)代表字符串,(‘command’)代表命令。

假如文件aa.txt中有如下内容:
第1行第1列 第1行第2列
第2行第1列 第2行第2列

要想读出aa.txt中的内容,可以用

for /F %i in (aa.txt) do echo %i

windows命令执行的几种绕过方法_第6张图片

Linux写了另外一篇文章,请到主页查看

你可能感兴趣的:(#,内网渗透,网络安全,安全,系统安全)