反序列化字符逃逸

  • php反序列化字符逃逸

序列化:

<?php
$a = array('123', 'abc', 'defg');
var_dump(serialize($a));
?>

结果:

string(49) "a:3:{i:0;s:3:"123";i:1;s:3:"abc";i:2;s:4:"defg";}" 

反序列化:

<?php
$b = 'a:3:{i:0;s:3:"123";i:1;s:3:"abc";i:2;s:4:"defg";}';
var_dump(unserialize($b));
?>

运行结果

array(3) { [0]=> string(3) "123" [1]=> string(3) "abc" [2]=> string(4) "defg" } 
  • 我们可以看到在后端中,反序列化是一";}结束的,如果我们把";}带入需要反序列化的字符串中(除了结尾处),是不是就能让反序列化提前结束后面的内容就丢弃了呢?我们把第二个值abc换成abc";i:2;s:5:"qwert";}
<?php
//$a = array('123', 'abc', 'defg');
//var_dump(serialize($a));
//"a:3:{i:0;s:3:"123";i:1;s:3:"abc";i:2;s:4:"defg";}"
$b = 'a:3:{i:0;s:3:"123";i:1;s:3:"abc";i:2;s:5:"qwert";}";i:2;s:4:"defg";}';
var_dump(unserialize($b));
?>

运行结果:

array(3) { [0]=> string(3) "123" [1]=> string(3) "abc" [2]=> string(5) "qwert" } 

成功的反序列化出我们自己定义的内容,丢弃了原先的内容(i:2;s:4:"defg"}

posted @ 2020-09-24 17:14  WANGXIN_YU  阅读(269)  评论(0)    收藏  举报