当前位置: 首页 > news >正文

php 系统命令执行及绕过

文章目录

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

php的基础概念

  • php的代码执行:不同于python rsa.py的形式,php的代码执行为http://baidu.com/index.php,浏览器会自行处理php代码并返回结果
  • 所需环境:phpstudy
  • GET包的特点,所有参数都在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 来输出数据:

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

6.文件操作

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

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) 代替空格。

示例:

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

相关文章:

php 系统命令执行及绕过

文章目录 php的基础概念php的基础语法1. PHP 基本语法结构2. PHP 变量3.输出数据4.数组5.超全局变量6.文件操作 php的命令执行可以执行命令的函数命令执行绕过利用代码中命令&#xff08;如ls&#xff09;执行命令替换过滤过滤特定字符串神技&#xff1a;利用base64编码解码的绕…...

保护大数据的最佳实践方案

在当今数字化时代&#xff0c;保障大数据安全的重要性再怎么强调也不为过。 随着科技的迅猛发展以及对数据驱动决策的依赖日益加深&#xff0c;企业必须将保护其宝贵信息置于首位。 我们将深入探讨保障大数据安全的流程&#xff0c;并讨论关键原则、策略、工具及技术&#xf…...

在高流量下保持WordPress网站的稳定和高效运行

随着流量的不断增加&#xff0c;网站的稳定和高效运行变得越来越重要&#xff0c;特别是使用WordPress搭建的网站。流量过高时&#xff0c;网站加载可能会变慢&#xff0c;甚至崩溃&#xff0c;直接影响用户体验和网站正常运营。因此&#xff0c;我们需要采取一些有效的措施&am…...

Redis7——基础篇(二)

前言&#xff1a;此篇文章系本人学习过程中记录下来的笔记&#xff0c;里面难免会有不少欠缺的地方&#xff0c;诚心期待大家多多给予指教。 基础篇&#xff1a; Redis&#xff08;一&#xff09; 接上期内容&#xff1a;上期完成了Redis环境的搭建。下面开始学习Redis常用命令…...

Docker 容器安装 Dify的两种方法

若 Windows 已安装 Docker&#xff0c;可借助 Docker 容器来安装 Dify&#xff1a; 一、方法一 1. 拉取 Dify 镜像 打开 PowerShell 或命令提示符&#xff08;CMD&#xff09;&#xff0c;运行以下命令从 Docker Hub 拉取 Dify 的镜像&#xff08;Docker Hub中找到该命令行&…...

golang常用库之-swaggo/swag根据注释生成接口文档

文章目录 golang常用库之-swaggo/swag库根据注释生成接口文档什么是swaggo/swag golang常用库之-swaggo/swag库根据注释生成接口文档 什么是swaggo/swag github&#xff1a;https://github.com/swaggo/swag 参考文档&#xff1a;https://golang.halfiisland.com/community/pk…...

docker中pull hello-world的时候出现报错

Windows下的docker中pull的时候出现下面的错误&#xff1a; PS C:\Users\xxx> docker pull hello-world Using default tag: latest Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connect…...

NPM环境搭建指南

NPM&#xff08;Node Package Manager&#xff09;是 Node.js 的包管理工具&#xff0c;堪称前端开发的基石。本文将手把手教你 在Mac、Windows、Linux三大系统上快速搭建NPM环境&#xff0c;并验证是否成功。 一、Mac系统安装NPM 方法1&#xff1a;通过Homebrew安装&#xff…...

【CSS进阶】常见的页面自适应的方法

在前端开发中&#xff0c;自适应布局&#xff08;Responsive Design&#xff09;是一种让网页能够适应不同屏幕尺寸、设备和分辨率的技术。常见的自适应布局方法包括 流式布局、弹性布局&#xff08;Flexbox&#xff09;、栅格布局&#xff08;Grid&#xff09;、媒体查询&…...

Linux系统配置阿里云yum源,安装docker

配置阿里云yum源 需要保证能够访问阿里云网站 可以先ping一下看看&#xff08;阿里云可能禁ping&#xff0c;只要能够解析为正常的ip地址即可&#xff09; ping mirrors.aliyun.com脚本 #!/bin/bash mkdir /etc/yum.repos.d/bak mv /etc/yum.repos.d/*.repo /etc/yum.repos…...

啥是CTF?新手如何入门CTF?网络安全零基础入门到精通实战教程!

CTF是啥 CTF 是 Capture The Flag 的简称&#xff0c;中文咱们叫夺旗赛&#xff0c;其本意是西方的一种传统运动。在比赛上两军会互相争夺旗帜&#xff0c;当有一方的旗帜已被敌军夺取&#xff0c;就代表了那一方的战败。在信息安全领域的 CTF 是说&#xff0c;通过各种攻击手…...

免费搭建个人网站

&#x1f4a1; 全程零服务器、完全免费&#xff01;我的个人站 guoshunfa.com &#xff0c;正是基于此方案搭建&#xff0c;目前稳定运行。 ✅ vdoing不是基于最新的vuepress2&#xff0c;但是是我目前使用过最好用的主题&#xff0c;完全自动化&#xff0c;只需专心写博客。 …...

网络安全钓鱼邮件测试 网络安全 钓鱼

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 如今&#xff0c;网络安全是一个备受关注的话题&#xff0c;“网络钓鱼”这个词也被广泛使用。 即使您对病毒、恶意软件或如何在线保护自己一无所知&#xff0c;您…...

Rust编程语言入门教程(五)猜数游戏:生成、比较神秘数字并进行多次猜测

Rust 系列 &#x1f380;Rust编程语言入门教程&#xff08;一&#xff09;安装Rust&#x1f6aa; &#x1f380;Rust编程语言入门教程&#xff08;二&#xff09;hello_world&#x1f6aa; &#x1f380;Rust编程语言入门教程&#xff08;三&#xff09; Hello Cargo&#x1f…...

haproxy实现MySQL服务器负载均衡

1.环境准备 准备好下面四台台服务器&#xff1a; 主机名IP角色open-Euler1192.168.121.150mysql-server1openEuler-2192.168.121.151mysql-server2openEuler-3192.168.121.152clientRocky8-1192.168.121.160haproxy 2.mysql服务器配置 1.下载mariadb #下载mariadb [rootop…...

Windows桌面系统管理5:Windows 10操作系统注册表

Windows桌面系统管理0&#xff1a;总目录-CSDN博客 Windows桌面系统管理1&#xff1a;计算机硬件组成及组装-CSDN博客 Windows桌面系统管理2&#xff1a;VMware Workstation使用和管理-CSDN博客 Windows桌面系统管理3&#xff1a;Windows 10操作系统部署与使用-CSDN博客 Wi…...

CSDN文章质量分查询系统【赠python爬虫、提分攻略】

CSDN文章质量分查询系统 https://www.csdn.net/qc 点击链接-----> CSDN文章质量分查询系统 <------点击链接 点击链接-----> https://www.csdn.net/qc <------点击链接 点击链接-----> CSDN文章质量分查询系统 <------点击链接 点击链…...

Mysql测试连接失败

解决方案 1 将mysql.exe(C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe)配置到系统环境变量 2 管理员权限启动cmd 输入 3 ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 123456; 4 FLUSH PRIVILEGES;...

DeepSeek(AI)如何赋能智能漏洞扫描与利用的思考

当下&#xff0c;网络安全威胁持续演变&#xff0c;从简单恶意软件传播发展为结合人工智能、大数据分析的APT&#xff0c;对个人、企业及政府关键信息基础设施构成严重挑战。 漏洞作为网络安全薄弱点&#xff0c;数量和种类随软件系统升级与网络架构复杂化急剧增加&#xff0c…...

Springboot使用Redis发布订阅自动更新缓存数据源

背景 当项目有很多数据源的时候&#xff0c;通常会在启动的时候就把数据源连接加载缓存上&#xff0c;当数据源进行变更后如何自动实时将缓存的数据源进行更新呢&#xff1f;如果是单个项目直接调接口方法就行了&#xff0c;但是涉及到分布式多个系统呢&#xff1f; 解决方案…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...