php系统命令执行及绕过
- 游戏开发
- 2025-08-26 21:48:01

文章目录 php的基础概念php的基础语法1. PHP 基本语法结构2. PHP 变量3.输出数据4.数组5.超全局变量6.文件操作 php的命令执行可以执行命令的函数命令执行绕过利用代码中命令(如ls)执行命令替换过滤过滤特定字符串神技:利用base64编码解码的绕过拼接绕过过滤符号过滤绕过 php的基础概念 php的代码执行:不同于python rsa.py的形式,php的代码执行为http://baidu /index.php,浏览器会自行处理php代码并返回结果所需环境:phpstudyGET包的特点,所有参数都在url里,而POST包将数据单独放到一个表单里 php的基础语法 文件与变量之间用?分隔变量与变量之间用&分隔 1. PHP 基本语法结构
PHP 代码通常嵌入到 HTML 中,PHP 语句用 <?php ... ?> 标签包裹。
<?php // 这里是 PHP 代码 echo "Hello, World!"; ?> 2. PHP 变量PHP 变量以 $ 符号开头,后面跟上变量名。PHP 变量不需要显式声明类型,可以自动根据值类型推断。
<?php $name = "John"; // 字符串类型 $age = 25; // 整型 $is_active = true; // 布尔类型 $pi = 3.14159; // 浮点型 ?> 3.输出数据PHP 使用 echo 或 print 来输出数据:
<?php echo "Hello, World!"; // 输出字符串 print "PHP is fun!"; ?> 4.数组 索引数组 <?php $fruits = array("apple", "banana", "cherry"); echo $fruits[0]; // 输出 apple ?> 键值对数组 <?php $person = array("name" => "John", "age" => 25); echo $person["name"]; // 输出 John ?> 5.超全局变量 $_GET:用于获取 URL 查询字符串中的数据。 <?php echo $_GET['name']; // 获取 URL 中 name 参数的值 ?> $_POST:用于获取表单提交的数据。 <?php echo $_POST['email']; // 获取表单中 email 字段的值 ?> 6.文件操作 读取文件 <?php $content = file_get_contents("file.txt"); echo $content; ?> 写入文件 <?php file_put_contents("file.txt", "Hello, World!"); ?> php的命令执行 可以执行命令的函数命令执行绕过
一般默认命令执行是在linux服务器上执行
利用代码中命令(如ls)执行命令;两条命令分别执行
eg:dir=;cat \flag
&&前一条命令执行成功了才会执行下一条命令,注意在输入参数时一定要进行url编码,如果不进行编码它会当作多个参数的分隔符 || 两条命令只要一条成功即结束 ,即第一条成功就不会执行下一条(如果不给回显,可以利用这个特点将不给回显的代码短路)
替换过滤比如将关键字cat替换为空
绕过策略:双写绕过:ccatat,替换后得到cat 过滤特定字符串比如flag
利用通配符 ∗ * ∗, ∗ * ∗ 代表任意长度字符串利用占位符?,?表示一个字符 神技:利用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 中,可以通过以下几种方法绕过空格过滤: 使用 chr() 函数 chr(32) 可以表示空格字符,因此可以用 chr(32) 代替空格。示例:
$a . chr(32) . $b; 使用 HTML 实体 $a . ' ' . $b; $a . ' ' . $b; 使用数组合并 implode('', array($a, ' ', $b)); 使用字符串的转义 $a . '\x20' . $b; 读文件时可以用<>代替空格使用${IFS}可以代替空格(利用IFS变量存储空格)%09 %0b %0c 代替绕过(可以用payload爆破了试试看,注意url编码两位一编,所以需要设置两位有效位)利用字符串截取绕过空格(利用已有的环境变量 env)php系统命令执行及绕过由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“php系统命令执行及绕过”
上一篇
【后端】k8s
下一篇
【前端学习笔记】Vue3