Web_php_include

代码审计

进入环境,根据题目的提示,本题考察文件包含漏洞

<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {$page=str_replace("php://", "", $page);
}
include($page);
?>
  •  源码中利用GET请求hello和page两个变量的值
  • hello的参数会被直接打印输出
  • page参数会被赋值并利用strstr函数进行php://字符串匹配,将匹配到的字符串替换为空
  • 最后包含$page变量

strstr

strstr() 函数搜索字符串在另一字符串中的第一次出现,返回字符串的剩余部分(从匹配点)。如果未找到所搜索的字符串,则返回 FALSE。

该函数对大小写敏感。如需进行不区分大小写的搜索,请使用 stristr() 函数。

语法:
strstr(string,search,before_search)
参数描述
string必需。规定被搜索的字符串。
search

必需。规定所搜索的字符串。

如果此参数是数字,则搜索匹配此数字对应的 ASCII 值的字符。

before_search

可选。默认值为 "false" 。

如果设置为 "true",它将返回 search 参数第一次出现之前的字符串部分。

解题步骤

解1(大小写绕过)

第一时间想到的是构造page变量的值,因为源码中并没有检测hello变量必须存在的函数

虽然对page变量进行了php://匹配,但是只是查找匹配,所以可以尝试大小写看能不能绕过

利用到php://头的协议有两个:input和filter,因为没有提供flag存在的文件,所以filter不好用,我们可以尝试input协议POST方法写入系统命令

 可惜没有任何的回显,我去不应该的

查看了wp,我的思路是对的,不过别人用的工具是burp

 我也是一样的方法,结果就有回显了,搞不懂

但是如果在写入语句的前面用一个变量赋值,就可以产生回显,不过这输出也不对啊,这咋直接用url编码输出字符串了

 网上暂时没找到什么原因,然后我把手放在了enctype(表单类型)上,heckbar一共提供了四种类型,一个一个试了一下,在appilcation/x-www-form-urlencode(row) 类型的基础上,让页面成功回显

又成功得知一个缺口知识,下来得补上

有回显说明我们注入成功,接着注入恶意代码

发现一个疑似flag的PHP文件,继续构造

 

页面没回回显,吓我一跳,在源码中获得flag

知道了flag文件的名字,尝试了一下filter方法,没有回显,可能通配符不起作用

 解2(data://上传木马)

在查看wp时,看到了几种其他的方式去获取flag

其实当时也想到过利用data://写入木马文件,然后利用蚁剑连接,但是怎么连接这方面触及到了我的知识盲区

有两种方式:

第一种是直接写入数据,然后全部复制到蚁剑,直接链接就好了

第二种是对数据进行base64加密后在利用data写入

 解3(data://命令执行)

 解2只是data://协议的其中一个用法

data://协议跟php://input类似,可以让用户来控制输入流,当他与包含函数时,用户输入的data://流会被当做PHP代码执行

构造方式跟input一样,不过变成了GET传参 

依旧在源码中获得flag 

解4(hello)

一直忽略了一个hello变量,根据大佬wp得知

这里hello是有回显的,所以我们可以利用hello的参数进行命令执行,然后回显到浏览器

要实现hello命令执行,要先使page变量为真,然后将hello作为参数传递

但不知道为啥不能包含php头 

 最后利用show_source函数对flag文件进行高亮显示

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

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

相关文章

解决Ruoyi单体版本集成Echarts多图表时在Tab模式下不展示问题

目录 背景 一、Tab拆分后无法展示 1、环境简介 2、原始报表功能说明 3、tab切分遇到的问题 二、问题分析及解决 1、问题分析 2、问题解决 3、初始化时图表渲染 4、Tab切换时重渲 总结 背景 最近在使用ruoyi的单体化版本进行Echarts多图表展示时遇到一个问题&#xff0c;r…

苍穹外卖day03——菜品管理业务代码开发

目录 公共字段自动填充——问题分析和实现思路 公共字段自动填充——代码实现(1) 公共字段自动填充——代码实现完善(2) 新增菜品——需求分析与设计 产品原型 ​编辑 接口设计 ​编辑 数据库设计 新增菜品——代码开发1(文件上传接口) 配置文件 Controller层代码 前后…

Java经典面试解析:服务器卡顿、CPU飙升、接口负载剧增

01 线上服务器CPU飙升&#xff0c;如何定位到Java代码 解决这个问题的关键是要找到Java代码的位置。下面分享一下排查思路&#xff0c;以CentOS为例&#xff0c;总结为4步。 第1步&#xff0c;使用top命令找到占用CPU高的进程。 第2步&#xff0c;使用ps –mp命令找到进程下…

无线电音频-BPA600蓝牙协议分析仪名词解析

1 介绍 2 Baseband基带分析 (1)Delta 是什么含义? "Delta" 有多个含义,取决于上下文。以下是常见的几种含义: 希腊字母:Delta&#x

Linux(centos7)下安装mariadb10详解

MariaDB 和 MySQL 之间存在紧密的关系。 起源&#xff1a;MariaDB 最初是作为 MySQL 的一个分支而创建的。它的初始目标是保持与 MySQL 的兼容性&#xff0c;并提供额外的功能和性能改进。 共同的代码基础&#xff1a;MariaDB 使用了 MySQL 的代码基础&#xff0c;并在此基础上…

Docker 常用命令

docker命令大全 命令说明docker attach将本地标准输入、输出和错误流附加到正在运行的容器docker build从 Dockerfile 构建镜像docker builder管理构建docker checkpoint管理检查点docker commit从容器的更改中创建新图像docker config管理 Docker 配置docker container管理容器…

如何清除视频和照片中水印的几种方式

文章目录 如何清除视频和照片中水印的几种方式一、清除视频中水印的几种方式1、截除水印区域2、模糊水印区域3、使用人工智能技术工具3.1 通过【iMyFone-MarkGo[^1]】消除水印3.2 通过【嗨格式视频转换器[^2]】消除水印3.3 通过【PR 视频编辑器】消除水印3.4 通过 【美图秀秀】…

【Linux】网络基础之UDP协议

目录 &#x1f308;前言&#x1f338;1、传输层&#x1f33a;2、重谈端口号&#x1f368;2.1、端口号范围划分&#x1f367;2.2、认识知名端口号 &#x1f340;3、UDP协议&#x1f368;3.1、UDP协议报文结构&#x1f369;3.2、UDP协议的特点&#x1f36a;3.3、基于UDP的应用层协…

openwrt 阿里云盘webdav 转成 samba4挂载

需要rclone 与samba4-server rclone 吧webdav挂载到openwrt的某个目录下。 然后通过samba-server 挂载出去。 安装rclone sudo -v ; curl https://rclone.org/install.sh | sudo bash 安装fuse opkg install fuse-utils 软连接 ln -s /usr/bin/fusermount /usr/bin/fuse…

【Kubernetes运维篇】RBAC之创建集群用户管理K8S

文章目录 一、创建zhangsan集群用户赋予uat名称空间管理员权限二、创建lisi集群用户赋予查看所有名称Pod权限 需求&#xff1a;公司新入职两位运维同事&#xff0c;分别是zhangsan、lisi&#xff0c;刚入职肯定不能给K8S管理员权限&#xff0c;所以需要创建两个系统账号&#x…

k8s与集群管理

从docker讲起 终于有人把 Docker 讲清楚了&#xff0c;万字详解&#xff01; Docker资源&#xff08;CPU/内存/磁盘IO/GPU&#xff09;限制与分配指南 默认情况下&#xff0c;Docker容器是没有资源限制的&#xff0c;它会尽可能地使用宿主机能够分配给它的资源。如果不对容器资…

chinese_lite OCR使用教程

目录 一、简介二、环境三、项目地址四、使用说明五、各语言的Demo地址六、效果展示 一、简介 超轻量级中文ocr&#xff0c;支持竖排文字识别, 支持ncnn、mnn、tnn推理 ( dbnet(1.8M) crnn(2.5M) anglenet(378KB)) 总模型仅4.7M 二、环境 python3.6linux/macos/windows 三…

JVM回收算法(标记-清除算法, 复制算法, 标记-整理算法)

1.标记-清除算法 最基础的算法&#xff0c;分为两个阶段&#xff0c;“标记”和“清除” 原理&#xff1a; - 标记阶段&#xff1a;collector从mutator根对象开始进行遍历&#xff0c;对从mutator根对象可以访问到的对象都打上一个标识&#xff0c;一般是在对象的header中&am…

自动化测试框架性能测试报告模板

目录 一、项目概述 二、测试环境说明 三、测试方案 四、测试结果 五、结果分析 总结&#xff1a; 一、项目概述 1.1 编写目的 本次测试报告&#xff0c;为自动化测试框架性能测试总结报告。目的在于总结我们课程所压测的目标系统的性能点、优化历史和可优化方向。 1.2 …

AUTOSAR CP标准的RTE和BSW各模块的设计及开发工作

AUTOSAR&#xff08;Automotive Open System Architecture&#xff09;是一种开放的汽车电子系统架构标准&#xff0c;旨在提供一种统一的软件架构&#xff0c;以实现汽车电子系统的模块化和可重用性。 AUTOSAR标准中的两个重要模块是RTE&#xff08;Runtime Environment&…

【AI底层逻辑】——篇章5(上):机器学习算法之回归分类

目录 引入 一、何为机器学习 1、定规则和学规则 2、算法的定义 二、机器学习算法 1、常见学习方法 2、回归 3、分类 续下篇... 往期精彩&#xff1a; 引入 计算机发明初&#xff0c;专家通过将专业知识和经验梳理成规则输入计算机程序&#xff0c;但是这样跟不上知识…

【运维工程师学习五】数据库之MariaDB

【运维工程师学习五】数据库 1、常用的关系型数据库2、C/S结构3、MariaDB图形客户端4、安装MariaDB5、启动MariaDB及验证启动是否成功6、验证启动——端口7、验证启动——进程8、MariaDB配置文件路径主配置文件解读&#xff1a; 9、MariaDB的配置选项10、MariaDB客户端连接1、在…

设计模式 ~ 单例模式

单例模式 单例模式是一种设计模式&#xff0c;指在确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问该实例&#xff1b; 前端对于单例模式不常用&#xff0c;但是单例的思想无处不在&#xff1b; 创建之后缓存以便继续使用&#xff1b; 如&#xff1a;弹窗、遮罩…

【Python】json 格式转换 ( json 模块使用 | 列表转 json | json 转列表 | 字典转 json | json 转字典 )

文章目录 一、json 格式转换1、json 模块使用2、代码示例分析 - 列表转 json3、代码示例分析 - 字典转 json json 格式 字符串 与 Python 中的 字典 dict 和 列表 list 变量 可以无缝转换 ; 调用 json.dumps 函数 可以将 Python 列表 / 字典 转为 json ;调用 json.loads 函数 …

Elasticsearch 中的矢量搜索:设计背后的基本原理

作者&#xff1a;Adrien Grand 你是否有兴趣了解 Elasticsearch 用于矢量搜索&#xff08;vector search&#xff09;的特性以及设计是什么样子&#xff1f; 一如既往&#xff0c;设计决策有利有弊。 本博客旨在详细介绍我们如何选择在 Elasticsearch 中构建矢量搜索。 矢量搜索…