题目

解题过程

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反序列化)相关推荐

  1. [CTF/网络安全]攻防世界unserialize3解题详析及php序列化反序列化实例讲解

    [CTF/网络安全]攻防世界unserialize3解题详析及php序列化反序列化实例讲解 _wakeup()及php序列化反序列化 序列化字符串结构分析 _wakeup()的利用 解题思路 伪属性数 ...

  2. 攻防世界各类题目相关

    攻防世界 全沾菜鸡一枚的学习记录,如有冒犯还请大佬们多多指正. 这里面的题目自己再写的时候和复现的时候,有许多的是借鉴的大佬们的文章进行复现的,但是由于太多,并没有完整的记录下那些大佬们的博客的文章, ...

  3. 攻防世界writeup

    攻防世界writeup 前言 web 新手练习 view_source get_post robots backup cookie disabled_button simple_js xff_refe ...

  4. 攻防世界WEB练习-easyupload

    前言 作者简介:不知名白帽,网络安全学习者. 博客主页:https://blog.csdn.net/m0_63127854?type=blog 攻防世界专栏:https://blog.csdn.net ...

  5. 攻防世界Web题 - unseping 总结

    攻防世界Web题 - unseping 总结 1.审题 进入题目,可以看出来是典型的php反序列化题目. 2.源代码分析 <?php highlight_file(__FILE__); //显示 ...

  6. 攻防世界-----web知识点总结

    WEB 一. 网页源代码的方式 在地址栏前面加上view-source,如view-source:https://www.baidu.com 浏览器的设置菜单框中使用开发者工具,也可以查看网页源代码. ...

  7. 攻防世界unseping

    感觉新手题里面最难的一题 ----------------------------------------------------------------正文 原题:攻防世界 这个题涉及的只是挺多的, ...

  8. 攻防世界[刷题笔记]之Web方向(练习区)(后半)

    网络安全学习 攻防世界[刷题笔记] Web方向(新手区)(后半) xff_referer webshell command_execution simple_js 小结 攻防世界[刷题笔记] Web方 ...

  9. 攻防世界 web高手进阶区 9分题 bilibili

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的9分题 本文是bilibili的writeup 解题过程 进来界面 这尼玛出题人是黑还是粉啊 笑死 看题目意思是买lv6 惯例源码+御剑 没发现什 ...

最新文章

  1. Web 开发人员必备的随机 JSON 数据生成工具
  2. P5568 [SDOI2008]校门外的区间(离散数学应用+线段树+开闭区间处理)(校门三部曲)难度⭐⭐⭐⭐
  3. Hibernate映射解析——七种映射关系
  4. python中一共有多少个关键字-python – 搜索多个关键字的字符串列表
  5. ORACLE 11g 使用ROWNUM完美解决ORA-00600:内部错误代码
  6. npm run dev 后dist 被情况_npmamp;npxamp;nvmamp;yarn 介绍
  7. javaweb学习总结十七(web应用组织结构、web.xml作用以及配置虚拟主机搭建网站)
  8. jquery文件上传插件 uploadify java_jQuery文件上传插件Uploadify使用指南
  9. live555 源码分析: PLAY 的处理
  10. java方法调用机制_Java方法调用机制 - osc_bkdv2it5的个人空间 - OSCHINA - 中文开源技术交流社区...
  11. 前端学习(554):node实现登录和注册第二部分代码
  12. SparkStreaming之mapWithState
  13. 黑客全家桶、文字提取利器、深度学习 500 问 | GitHub 热点速览
  14. nvl2可以套公式吗 oracle_包装设计也可以套公式?8个公式带你玩转包装创意表现形式...
  15. 为什么这本书大家都称好
  16. [HNOI2019]JOJO(KMP自动机+主席树)
  17. 菜鸟教程Python教程100例(一)(持续更新)
  18. 教程 ios 4 以上安装mobile terminal的最简单方法
  19. Java标准教程:Java 2D绘图--第4章 使用Text API
  20. 运算符和强制类型转换

热门文章

  1. 由马化腾谈“微博修改功能”,看什么是优秀的产品经理
  2. Linux bash总结(一) 基础部分(适合初学者学习和非初学者参考)
  3. 28--仅仅反转字母
  4. linux环境部署ltmj,Linux系统安装与简单配置 图文.docx
  5. 解决 :sudo:/etc/sudoers 可被任何人写
  6. 玩Python遇到的问题一二三及解决办法
  7. Storm编程模型总结
  8. 关于eclipse项目红色感叹号的解决办法
  9. c语言结构体指针初始化
  10. 嵌入式面试中常见的编程题目