https://paper.seebug.org/1114/
https://github.com/top-think/framework/commit/1bbe75019ce6c8e0101a6ef73706217e406439f2
从只检测长度为32到增加ctype_alnum
tp6启用.env,感觉跟laravel越来越靠近
根目录cp .example.env .env
修改app/middleware.php
把session初始化下面代码注释去掉
return [
*// 全局请求缓存*
// \think\middleware\CheckRequestCache::class,*
// 多语言加载*
// \think\middleware\LoadLangPack::class,*
// Session初始化*
*\think\middleware\SessionInit::class
];
在app/controller/Index.php里增加
public function test(){
session(**'demo'**, $_GET[**'c'**]);
}
注意session长度,要为32
如果不是32,会重新设置session
setId会有两次被调用,第一次是读session
第二次是在最后$http->end 执行到SessionInit->end() -> Session->save()
think\Session\Store->save()
跟进
拼接sess_
再拼接目录
得到文件名和目录,创建目录
继续跟进
writeFile
就写入了
第一次写分析漏洞,措辞和分析如果有误,欢迎指教