反检测、反清理,是红队攻击中的重中之重,本文详细描述了几种windows执行命令的几种绕过手法。
whoami //正常执行
w"h"o"a"m"i //正常执行
w"h"o"a"m"i" //正常执行
wh"“oami //正常执行
wh”“o^am"i //正常执行
((((Whoam”"i)))) //正常执行
执行如下图所示:
甚至可以加无数个”但不能同时连续加2个符号,因为号是cmd中的转义符,跟在他后面的符号会被转义
w""""""""""""“hoami //正常执行
w”"""""""""""“hoa^m”“i //正常执行
w”"""""""""""“hoa^^m”"i //执行错误
set a=net user //设置变量a,值为1
echo a //此时输出结果为"a"
echo %a% //此时输出结果为net user
set a=net u //设置变量a,值
set b=ser //此时输出结果为"a"
echo %a%%b% //此时输出结果为net user
这个方法是最实用,实战中,经常会遇到屏蔽某个字符串的输入,或者限制输入危险字符,可以经常用到的
原理是对字符进行切割
%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
继续往下,相信所有人都知道,|在cmd中,可以连接命令,且只会执行后面那条命令
whoami | ping www.baidu.com
ping www.baidu.com | wh""oam^I //两条命令都只会执行后面的
|| 符号,只有在前面命令失败,才会执行后面的语句
& 符号,前面的命令可以成功也可以失败,都会执行后面的命令
&& 符号 就必须两条命令都为真才可以
该命令表示以增量形式从开始到结束的一个数字序列。
使用迭代变量设置起始值(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"
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
Linux写了另外一篇文章,请到主页查看