PHP反序列化漏洞-字符串逃逸

发布时间:2024年01月19日

字符串逃逸(闭合)

字符串逃逸(闭合)是一种在反序列化函数可控的情况下,通过修改序列化字符串中的敏感字符来达到字符串逃逸的方法。具体而言,可以通过修改变量名等个数,使得序列化字符串中的字符个数与实际变量值个数不一致。由于反序列化机制要求字符串长度必须满足一定条件,因此可以通过构造增加或减少字符的方式来实现字符串逃逸。这种方法可以分为两种情况:1. 序列化字符串变长增加;2. 序列化字符串变短减少。

原理:是在序列化字符串之后追加任意字符串,这样不会影响反序列化的进行。通过修改序列化字符串中的敏感字符,可以绕过一些安全检查和限制,从而实现字符串逃逸。

正常序列化

<?php
$a[]='ping';
$b = serialize($a);
print_r($b);

// 输出:a:1:{i:0;s:4:"ping";}
?>

反序列化示例

<?php
// 正常序列化
//$a[]='ping';
//$b = serialize($a);
//print_r($b);

// 输出:a:1:{i:0;s:4:"ping";}

//$str ='a:1:{i:0;s:4:"ping";}';           // a[]=ping
//$str ='a:1:{i:0;s:4:"ping";}";}123';      // a[]=ping
//$str
文章来源:https://blog.csdn.net/weixin_43263566/article/details/135682599
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。