代码审计-4 代码执行漏洞

news2024/7/4 4:33:47

代码执行漏洞

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

代码执行漏洞利用

在这里插入图片描述

ZZZPHP1.6 远程代码执行漏洞分析

在这里插入图片描述

漏洞点函数

此处如果能控制$ifstr就可以进行闭合,执行恶意代码
parserIfLabel函数将传入的参数进行正则匹配,当匹配通过时继续往下走
下面并没有对恶意代码内容进行过滤

在这里插入图片描述
跟踪parserIfLabel函数查看它的参数是在哪里传入的
此处将parserCommom函数传入的参数作为参数,来调用parserIfLabel函数

在这里插入图片描述
继续跟踪parserCommom函数查看它的参数是在哪里传入的
此处parserCommom函数的参数值是通过load_file函数的结果进行赋值的

在这里插入图片描述
继续跟踪load_file函数
此函数的功能就是载入对应路径的文件,并返回文件内容

在这里插入图片描述
也就是载入此处传入的$tplfile变量中的路径的文件,并返回文件内容

在这里插入图片描述
继续找变量$tplfile的值是从哪里赋来的
$tplfile的值是通过一个switch语句根据变量$location的值进行判断匹配然后赋值的,TPL_DIR为绝对路径

在这里插入图片描述
$location变量的值又是通过getlocation函数返回的

在这里插入图片描述
跟踪getlocation函数,此函数的作用就是返回get请求方式url中的最后一个文件名
例如:http://127.0.0.1/zzzphp/search.html返回的就是search

在这里插入图片描述

复现

找到serach的页面

在这里插入图片描述
此页面就是一个模板

在这里插入图片描述
点击编辑可以对此页面的模板内容进行编辑
将我们的恶意代码{if:phpinfo()};{end if}随便插入

在这里插入图片描述分析:
1.当我们插入恶意语句后,getlocation函数获取url最后的文件名称为search赋值给变量$location
2.switch语句判断变量$location中的值为search,将当前绝对路径TPL_DIRsearch.html拼接起来赋值给$tplfile变量
3.load_file函数去读取$tplfile变量中存放路径对应的文件的内容,并返回给$zcontent变量
4.$zcontent变量当做参数传入parserCommom函数执行
5.parserCommom函数中定义将参数,也就是$zcontent变量,传入parserIfLabel函数来执行
6.parserIfLabel函数通过正则表达式将恶意代码{if:phpinfo()};{end if}进行匹配筛选,将筛选出来的字符串phpinfo()赋值给变量$ifstr
7.parserIfLabel函数通过eval$ifstr中的恶意代码phpinfo()进行执行

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

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

相关文章

游戏开发37课 狙击枪 视野问题

首先说一下视野的思路:我们可视化的视野全部都是以扇形显示的,同时为了后期的方便调整我们的视野和距离都必须是动态的。那么我们是不是可以使用度数来控制视野范围,那么我们就需要画出一个扇形。那么我们可以先画出来一个圆 然后在这个圆上面…

Linux安装 vmware workstation

官网下载地址 vmware workstation: Download VMware Workstation Pro 也可以下载提供的安装包。 链接:百度网盘 请输入提取码 提取码:au74 一、Ubuntu 安装 安装构建依赖项,打开您的系统终端并运行以下命令: s…

Linux操作系统中的yum命令

Linux操作系统中的yum命令是大家经常会用到的命令,有着非常重要的作用,但很多朋友依然不太清楚yum命令作用是什么?yum命令有哪些语法和常用命令?接下来我们一起来看看详细的内容介绍。 yum命令全称为Yellow dog Updater, Modified…

ChatGPT生成量化交易策略,真好玩

OK,还有没有更好玩的对 量化策略开发,高质量社群,交易思路分享等相关内容 『正文』 ˇ 最近比较火的OpenAI-ChatGPT,太有意思了。尝试让它写了几个策略,您别说,还真是有模有样。我们来看看吧。 模型一&a…

哈希(开散列、闭散列)-位图-布隆过滤器-哈希切分

文章目录1、哈希概念2、哈希表/散列表(1)哈希函数的设计:(2)(最常用)除留余数法:(3)如何解决哈希冲突?更加合理的设计哈希函数闭散列(…

Java多线程之线程同步机制(锁,线程池等等)

Java多线程之线程同步机制一、概念1、并发2、起因3、缺点二、三大不安全案例1、样例一(模拟买票场景)2、样例二(模拟取钱场景)3、样例三(模拟集合)三、同步方法及同步块1、同步方法2、同步块四、JUC安全类型…

java多线程这一篇就差不多了

java多线程这一篇就差不多了 什么是多线程? 一般被问你对多线程了解多少的时候,你可能不仅仅只需要知道线程怎么创建,你可能需要了解线程的几种创建方式,线程的生命周期,线程池相关,并发安全,…

ADSP-21489的图形化编程详解(4:左右声道音量调节和多通道的输入输出详解)

左右声道音量调节 在直通的前提下,我们加入一个调音量的算法模块,来实现调节输出音量大小的功能。首先拖出来一个音量调节算法模块: 我们这里都是双通道,所以需要对这个音量调节模块进行配置: 连好程序,下…

acwing基础课——Dijkstra

由数据范围反推算法复杂度以及算法内容 - AcWing 常用代码模板3——搜索与图论 - AcWing 基本思想: 迪杰斯特拉(dijkstra)算法是单源最短路径问题的求解方法,它是一个按路径长度递增的次序产生最短路径的算法。单源最短路径就在给出一个固定…

Sqoop数据导出第2关:HDFS数据导出至Mysql内

为了完成本关任务,你需要掌握: 1、数据库( MySQL )建表。 2、HDFS 数据导出至 MySQL 中。 数据库( MySQL )建表 因为这边 Sqoop 不能够帮关系型数据库创建表,所以需要我们自己来创建表。 用命令进入 MySQL 客户端。 mysql -uroot -p123123 -h127.0.0.1 创建数据库…

备忘录模式(Memento)

参考: [备忘录设计模式 (refactoringguru.cn)](https://refactoringguru.cn/design-patterns/mediator) 文章目录一、什么是备忘录模式?二、实现三、优缺点优点缺点四、适用环境一、什么是备忘录模式? 在软件构建过程中,某些对象…

3.ORM实践

文章目录3.1 介绍Spring Data JPAJPA(Java Persistence API)标准HibernateSpring DataSpring Data JPA引入依赖3.2 定义JPA的实体对象常用JPA注解实体主键映射关系常用lombok注解3.3 SpringBucks线上咖啡馆实战项目(1)项目目标&am…

如何利用Java爬取网站数据?

1.Jsoup介绍 - 官网文档:https://jsoup.org - Jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 2. Jsoup快速入门…

TCP--三次握手和四次挥手

原文网址:TCP--三次握手和四次挥手_IT利刃出鞘的博客-CSDN博客 简介 本文介绍TCP的三次握手和四次挥手。即:TCP建立连接和断开连接的过程。 三次握手 流程图 主机 A为客户端,主机B为服务端。 第一次握手 A 发送同步报文段(SYN…

小程序初始创建

1. 注册小程序账号 官网: https://mp.weixin.qq.com/wxopen/waregister?actionstep1 2. 下载小程序 官网: https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 百度网盘(非最新版) https://pan.baidu…

部署SNMP使网管与设备通信,配置关于TCP测试NQA的配置案例

一、部署SNMP 组网需求:通过部署RouterA由NMS网管设备管理用于监控网络是否畅通和业务是否正常。为了保证NMS和RouterA之间有一个数据传输安全、接入方式灵活、链路传输可靠的网络,并且可以实时监控设备的运行情况,网络中的RouterA通过网管实…

Databend 开源周报 #70

Databend 是一款强大的云数仓。专为弹性和高效设计,自由且开源。 即刻体验云服务:https://app.databend.com。 What’s New 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 Features & Improvements Format 更好地检查格…

PCB 二:AD 原理图绘制以及PCB绘制

PCB 二:AD 原理图绘制以及PCB绘制前言(一)资料总结(二)PCB前言 本文简单收集了AD软件在绘制PCB电路板的一些资料,还有遇到的一些问题,并记录一些常用的操作。 (一)资料总结 1【AD】Altium Designer 原理图的绘制 2【AD】Altium Designer P…

飞利浦CT的AI重建技术

原文:AI for significantly lower dose and improved image quality 飞利浦医疗CT的深度学习重建技术。 人工智能可显着降低剂量并提高图像质量概述背景飞利浦CT智能工作流Precise Image 如何训练神经网络深入了解深度学习训练神经网络验证神经网络推断法可以实现快…

Android 11及以上授予文件管理权限

背景 安卓11改变了此前安卓系统对于文件管理的规则,在安卓11上,文件读写变成了特殊权限。应用默认只能读写自己的目录/android/data/包名 gradle配置 Android11系统对应用写入权限做了严格的限制。本文介绍如何获取文件读写权限。 项目中 build.gradle 的targetSdkVersion …