#反序列化

被虚幻拿到MISC卡了很久,只做了一道nodejs题,详细记录一下。同时加上其他题目的笔记

AreUSerialz

  • PHP7的反序列化下可以使用public调用protected和private属性参考
  • 可以将序列化的数据类型从s改成S,php反序列化时会对数据进行解码。如%00 ⇒ \00 参考
  • 读不了Flag

    1. php.ini中设置了include_path

    2. 查看Apache配置文件(/etc/httpd/conf/httpd.conf)查看默认目录,再默认目录+文件名进行读取

    3. 题目中其他暗示

mehr

对于PHP反序列化,原来也就只是浅尝而止。最近看到很多题的出现了多种没有了解过的反序列化形式,就此进一步学习一下。其中很多内容都参考了师傅们的博客,部分内容经过自己的修改。如果存在错误,还望师傅们指出。

mehr

前言

除了unserialize()来利用反序列化漏洞之外,还可以利用phar文件以序列化的形式存储用户自定义的meta-data这一特性,扩大php反序列化漏洞的攻击面。该方法在文件系统函数(file_exists()、is_dir()等)参数可控的情况下,配合phar://伪协议,可以不依赖unserialize()直接进行反序列化操作。

这次在比赛当中遇到phar反序列化,却不知道如何下手。社区里前面也有人总结过,但没有包括一些ctf利用和zxc师傅发现的姿势。于是就自己来整理了。

mehr

漏洞分析:

思路

  1. 在Typecho_Cookie::get()方法中通过POST或者设置COOKIE的方法设置_typecho_config进行反序列化。
  2. 在序列化当中把adapter设置为一个类,导致页面执行代码时触发_toString()魔术方法。
  3. 在序列化当中设置$item令其没有screenName属性,导致在触发_toString()魔术方法的时候触发_get()魔术方法。
  4. 通过反序列化间接控制$this->_filter的值,利用array_map(),call_user_func()执行恶意代码。

可知,在利用漏洞的过程中,最终是要利用_toString(),_get()等魔术方法构造一个POC链,最终执行恶意代码

mehr

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×