深入浅析PHP的session反序列化裂痕题目
副问题[/!--empirenews.page--]
在php.ini中存在三项设置项: 以上的选项就是与PHP中的Session存储和序列话存储有关的选项。 在行使xampp组件安装中,上述的设置项的配置如下: 在上述的设置中,session.serialize_handler是用来配置session的序列话引擎的,除了默认的PHP引擎之外,还存在其他引擎,差异的引擎所对应的session的存储方法不沟通。 php_binary:存储方法是,键名的长度对应的ASCII字符+键名+颠末serialize()函数序列化处理赏罚的值 php:存储方法是,键名+竖线+颠末serialize()函数序列处理赏罚的值 php_serialize(php>5.5.4):存储方法是,颠末serialize()函数序列化处理赏罚的值 在PHP中默认行使的是PHP引擎,假如要修改为其他的引擎,只必要添加代码ini_set('session.serialize_handler','必要配置的引擎');。示例代码如下: session 的目次在 /var/lib/php/sessions 中 在 php_serialize 引擎下,session文件中存储的数据为: php 引擎下文件内容为: php_binary 引擎下文件内容为: 因为name的长度是4,4在ASCII表中对应的就是EOT。按照php_binary的存储法则,最后就是names:6:"spoock";。(溘然发明ASCII的值为4的字符无法在网页上面表现,这个各人自行去查ASCII表吧) PHP Session中的序列化危害PHP中的Session的实现是没有的题目,危害首要是因为措施员的Session行使不妥而引起的。 假如在PHP在反序列化存储的$_SESSION数据时行使的引擎和序列化行使的引擎纷歧样,会导致数据无法正确第反序列化。通过全心结构的数据包,就可以绕过措施的验证可能是执行一些体系的要领。譬喻: php文件如: 会见后获得session文件中的内容如下: 但此时模仿在其他页面行使差异的php引擎来读取时的内容如下:(默认行使php引擎读取session文件) a;
}
}
// var_dump($_SESSION);
会见该页面输出xx object(A)#1 (1) { ["a"]=> string(2) "xx" } }这是由于当行使php引擎的时辰,php引擎会以|作为作为key和value的脱离符,那么就会将 a:1:{s:4:"ryat";s:30:" 作为SESSION的key,将 O:1:"A":1:{s:1:"a";s:2:"xx";} 作为value,然后举办反序列化,最后就会获得A这个类。 这种因为序列话化和反序列化所行使的纷歧样的引擎就是造成PHP Session序列话裂痕的缘故起因。裂痕在加载行使php引擎的页面时session去读session中的内容并反序列化导致裂痕触发,不必要任何输出 GCTF上的一道session反序列化裂痕说明:index.php中内容为: 在php中,常常会行使序列化操纵来存取数据,可是在序列化的进程中假如处理赏罚不妥会带来一些安详隐患。 query.php 中的内容为: username == $USERNAME && $this->password == $PASSWORD){ //歉仄
$this->username =='aaaaaaaaaaaaaaaaa' && $this->password == 'bbbbbbbbbbbbbbbbbb'){
return 'key is:{'.$this->token.'}';
}
}
}
class TOPB{
public $obj;
public $attr;
function __construct(){
$this->attr = null;
$this->obj = null;
}
function __toString(){
$this->obj = unserialize($this->attr);
$this->obj->token = $FLAG;
if($this->obj->token === $this->obj->ticket){
return (string)$this->obj;
}
}
}
class TOPC{
public $obj;
public $attr;
function __wakeup(){
$this->attr = null;
$this->obj = null;
}
function __destruct(){
echo $this->attr;
}
}
*/
思绪如下:这题中我们结构一个TOPC,在析构的时辰则会挪用 将attr赋值为TOPB工具,在echo TOPB的时辰会自动挪用__tostring把戏要领 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |