RCE

pumpk1n 发布于 3 天前 15 次阅读


在 Web 应用中有时候程序员为了考虑灵活性、简洁性,会在代码调用 代码或命令执行函数去处理。比如当应用在调用一些能将字符串转化成代 码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏 洞。同样调用系统命令处理,将造成命令执行漏洞。

各种绕过

常见管道符

windows

  • “|”:直接执行后面的语句。
  • “||”:如果前面的语句执行失败,则执行后面的语句,前面的语句只能为假才行。
  • “&”:两条命令都执行,如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。
  • “&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。

linux

  • “;”:执行完前面的语句再执行后面的语句。
  • “|”:显示后面语句的执行结果。
  • “||”:当前面的语句执行出错时,执行后面的语句。
  • “&”:两条命令都执行,如果前面的语句为假则执行执行后面的语句,前面的语句可真可假。
  • “&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。

空格过滤

$

例如

cat flag.txt
cat${IFS}flag.txt 

重定向符

例如

cat<>flag.txt
cat<flag.txt

黑名单绕过

拼接

例如

a=c;b=at;c=fla;d=g.txt;$a$b $c$d

base64编码

例如

`echo "Y2F0IGZsYWcudHh0Cg=="|base64 -d`

内敛执行绕过

`命令`和$(命令)都是执行命令的方式

反引号``是命令替换,命令替换是指Shell可以先执行``中的命令,将输出结果暂时保存,在适当的地方输出。语法:`command`

常见函数

代码执行函数

  • eval():把字符串作为PHP代码执行
  • assert():断言
  • call_user_func():把第一个参数作为回调函数
  • call_user_func_array():调用回调函数,并把第一个数组作为回调函数的参数
  • array_map():为数组的每个元素应用回调函数

命令执行函数

  • system():执行外部程序并显示输出
  • exec():执行一个外部程序
  • shell_exec():通过shell环境执行命令,并将完整的输出以字符串的方式返回
  • passthru():执行外部命令并显示原始输出
  • pcntl_exec():在当前进程空间执行指定程序
  • `` 反引号():实际调用的shell_exec()函数
此作者没有提供个人介绍。
最后更新于 2026-05-29