php 系统命令执行及绕过

ops/2025/2/23 3:23:57/
webkit-tap-highlight-color: rgba(0, 0, 0, 0);">

文章目录

  • php的基础概念
  • php的基础语法
    • 1. PHP 基本语法结构
    • 2. PHP 变量
    • 3.输出数据
    • 4.数组
    • 5.超全局变量
    • 6.文件操作
  • php的命令执行
    • 可以执行命令的函数
    • 命令执行绕过
      • 利用代码中命令(如ls)执行命令
      • 替换过滤
      • 过滤特定字符串
      • 神技:利用base64编码解码的绕过
      • 拼接绕过过滤
      • 符号过滤绕过

php_1">php的基础概念

  • php的代码执行:不同于python rsa.py的形式,php的代码执行为http://baidu.com/index.php,浏览器会自行处理php代码并返回结果
  • 所需环境:phpstudy
  • GET包的特点,所有参数都在url里,而POST包将数据单独放到一个表单里

php_5">php的基础语法

  • 文件与变量之间用?分隔
  • 变量与变量之间用&分隔

1. PHP 基本语法结构

PHP 代码通常嵌入到 HTML 中,PHP 语句用 <?php ... ?> 标签包裹。

php"><?php// 这里是 PHP 代码echo "Hello, World!";
?>

2. PHP 变量

PHP 变量以 $ 符号开头,后面跟上变量名。PHP 变量不需要显式声明类型,可以自动根据值类型推断。

php"><?php$name = "John";  // 字符串类型$age = 25;       // 整型$is_active = true;  // 布尔类型$pi = 3.14159;   // 浮点型
?>

3.输出数据

PHP 使用 echo 或 print 来输出数据:

php"><?phpecho "Hello, World!";  // 输出字符串print "PHP is fun!";
?>

4.数组

  • 索引数组
php"><?php$fruits = array("apple", "banana", "cherry");echo $fruits[0];  // 输出 apple
?>
  • 键值对数组
php"><?php$person = array("name" => "John", "age" => 25);echo $person["name"];  // 输出 John
?>

5.超全局变量

  • $_GET:用于获取 URL 查询字符串中的数据。
php"><?phpecho $_GET['name'];  // 获取 URL 中 name 参数的值
?>
  • $_POST:用于获取表单提交的数据。
php"><?phpecho $_POST['email'];  // 获取表单中 email 字段的值
?>

6.文件操作

php">读取文件
<?php$content = file_get_contents("file.txt");echo $content;
?>
写入文件
<?phpfile_put_contents("file.txt", "Hello, World!");
?>

php_82">php的命令执行

可以执行命令的函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

命令执行绕过

一般默认命令执行是在linux服务器上执行

利用代码中命令(如ls)执行命令

;两条命令分别执行

eg:dir=;cat \flag

&&前一条命令执行成功了才会执行下一条命令,注意在输入参数时一定要进行url编码,如果不进行编码它会当作多个参数的分隔符
|| 两条命令只要一条成功即结束 ,即第一条成功就不会执行下一条(如果不给回显,可以利用这个特点将不给回显的代码短路

替换过滤

比如将关键字cat替换为空

  • 绕过策略:双写绕过:ccatat,替换后得到cat

过滤特定字符串

比如flag

  1. 利用通配符 ∗ * ∗ * 代表任意长度字符串
  2. 利用占位符?,?表示一个字符

神技:利用base64编码解码的绕过

在Linux环境中,比如输入cat ‘echo ‘love’’,会先执行单引号中的内容,使其成为cat love,那么利用这一点,我们就可以先将cat love进行base64编码,假设结果是x,接下来执行‘echo ‘x’|base64 -d’,从而绕过关键词过滤,同样的道理,可以使用其他类型的编码解码进行绕过

拼接绕过过滤

a=c;b=at;c=fla;d=g.php;$a$b {c}{d}
即可执行cat flag.php的命令在这里插入图片描述

符号过滤绕过

有了以上几种方法,关键字过滤其实没啥用,那么如果空格被禁用呢?

  • PHP 符号过滤空格绕过,在 PHP 中,可以通过以下几种方法绕过空格过滤:
  1. 使用 chr() 函数
    chr(32) 可以表示空格字符,因此可以用 chr(32) 代替空格。

示例:

php">$a . chr(32) . $b;
  1. 使用 HTML 实体
php">$a . '&nbsp;' . $b;
$a . '&#32;' . $b;
  1. 使用数组合并
php">implode('', array($a, ' ', $b));
  1. 使用字符串的转义
php">$a . '\x20' . $b;
  1. 读文件时可以用<>代替空格
  2. 使用${IFS}可以代替空格(利用IFS变量存储空格)
  3. %09 %0b %0c 代替绕过(可以用payload爆破了试试看,注意url编码两位一编,所以需要设置两位有效位)
  4. 利用字符串截取绕过空格(利用已有的环境变量 env)

http://www.ppmy.cn/ops/160666.html

相关文章

【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑮】

ISO 14229-1:2023 UDS诊断【ECU复位0x11服务】_TestCase15 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年02月18日 关键词&#xff1a;UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 TC11-015测试用例 用例ID测试场景验证要点参考条款预期结果TC…

StarRocks FE leader节点CPU使用率周期性的忽高忽低问题分析

背景 本文基于 StarRocks 3.3.5 最近在做一些 StarRocks 相关的指标监控的时候&#xff0c;看到了FE master的CPU使用率相对其他FE节点是比较高的&#xff0c;且 呈现周期性的变化&#xff08;周期为8分钟&#xff09;&#xff0c; 于此同时FE master节点的GC频率相对于其他节…

一种简单有效的分析qnx+android智能座舱项目中的画面闪烁的方法(8155平台)

在智能座舱项目的开发过程中&#xff0c;画面闪烁问题是一个常见但棘手的挑战。由于这些闪烁现象往往转瞬即逝&#xff0c;传统的分析工具如截图、录屏或dump图层等方法难以捕捉和定位问题根源。针对这一难题&#xff0c;本文介绍了一种较为有效的分析方法&#xff0c;能够帮助…

Unity3D协程的优化方案

系列文章目录 unity知识点 文章目录 系列文章目录&#x1f449;前言&#x1f449;一、协程的原理&#x1f449;二、优化实现&#x1f449;2-1、基础缓存方法&#x1f449;2-2、高级缓存&#xff08;按需缓存&#xff09;&#x1f449;2-3、减少协程的数量&#x1f449;2-4、避…

科普mfc100.dll丢失怎么办?有没有简单的方法修复mfc100.dll文件

当电脑频繁弹窗提示“mfc100.dll丢失”或应用程序突然闪退时&#xff0c;这个看似普通的系统文件已成为影响用户体验的核心痛点。作为微软基础类库&#xff08;MFC&#xff09;的核心组件&#xff0c;mfc100.dll直接关联着Visual Studio 2010开发的大量软件运行命脉。从工业设计…

【WRF模拟】全过程总结:更换不同研究时段改动总结

目录 1 数据准备1.1 嵌套域设置(Customize domain)-基于QGis中gis4wrf插件1.2 静态地理数据数据集1:叶面积指数数据集2:月反射率Albedo数据集3:土地利用类型+不透水面积1.3 气象驱动数据2 WPS预处理2.1 步骤1:Define model domains with geogrid2.2 步骤2:Extracting me…

七星棋牌顶级运营产品全开源修复版源码教程:6端支持,200+子游戏玩法,完整搭建指南(含代码解析)

棋牌游戏一直是移动端游戏市场中极具竞争力和受欢迎的品类&#xff0c;而七星棋牌源码修复版无疑是当前行业内不可多得的高质量棋牌项目之一。该项目支持 6大省区版本&#xff08;湖南、湖北、山西、江苏、贵州&#xff09;&#xff0c;拥有 200多种子游戏玩法&#xff0c;同时…

【回溯算法2】

力扣17.电话号码的字母组合 链接: link 思路 这道题容易想到用嵌套的for循环实现&#xff0c;但是如果输入的数字变多&#xff0c;嵌套的for循环也会变长&#xff0c;所以暴力破解的方法不合适。 可以定义一个map将数字和字母对应&#xff0c;这样就可以获得数字字母的映射了…