PHP中的Session Upload Progress 设置问题

在写CTF题目的时候遇到了session反序列化的漏洞,需要通过Session Upload Progress来写入seession的值。在本地测试时遇到了些问题:

fool1.php:
ini_set('session.serialize_handler', 'php_serialize');
session_start();
//$_SESSION['ryat'] = $_GET['ryat'];
?>


fool2.php:
ini_set('session.serialize_handler', 'php');
//or session.serialize_handler set to php in php.ini 
session_start();
class ryat {
    var $hi;

    function __wakeup() {
        echo 'hi';
    }
    function __destruct() {
        echo $this->hi;
    }
}
?>


大致意思就是通过floor1.php以php_serialize方式写入session,再通过floor2.php以php方式读取session,从而达到利用漏洞。


刚开始通过get方法传入|O:4:"ryat":1:{s:2:"hi";s:4:"ryat";}时正常,但是通过Session Upload Progress写入sessions时出了问题:


上传表单:_

 
 
 
 



上传后session的值为a:0:{};


但是如果把ini_set('session.serialize_handler', 'php_serialize');去掉又可以正常写入session,不过就无法使用php_serialize来写入了,就没法实现漏洞利用了。


想问问php_serialize是怎么影响了Session Upload Progress 

这是php设置

session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /var/lib/php/sessions /var/lib/php/sessions
session.serialize_handler php php
session.upload_progress.cleanup Off Off
session.upload_progress.enabled On On
session.upload_progress.freq 1% 1%
session.upload_progress.min_freq 1 1
session.upload_progress.name PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix upload_progress_ upload_progress_
session.use_cookies On On
session.use_only_cookies On On
session.use_strict_mode Off Off
session.use_trans_sid 0 0


你可能感兴趣的:(PHP中的Session Upload Progress 设置问题)