PHP字符逃逸导致的对象注入详解
1.漏洞产生原因: 序列化的字符串在经过过滤函数不正确的处理而导致对象注入,目前看到都是因为过滤函数放在了serialize函数之后,要是放在序列化之前应该就不会产生这个问题 <?php function filter ( $string ) { $a = str_replace ( 'x' , 'zz' , $string ) ; return $a ; } $username = "tr1ple" ; $password = "aaaaax" ; $user = array ( $username , $password ) ; echo ( serialize ( $user ) ) ; echo "\n" ; $r = filter ( serialize ( $user ) ) ; echo ( $r ) ; echo "\n" ; var_dump ( unserialize ( $r ) ) ; $a = 'a:2:{i:0;s:6:"tr1ple";i:1;s:5:"aaaaa";}i:1;s:5:"aaaaa";' ; var_dump ( unserialize ( $a ) ) ; php特性: 1.PHP 在反序列化时,底层代码是以 ; 作为字段的分隔,以 } 作为结尾(字符串除外),并且是根据长度判断内容的 2.对类中不存在的属性也会进行反序列化