[HarekazeCTF2019]Easy Notes
这个原题给了源码的,但现在我们去github上把源码下下来

在文件夹里发现个flag.php,打开后发现如果通过is_admin()就会给出flag
我们查看is_admin()函数在哪

我们发现admin是通过session来进行认证的
session的保存路径在这


Add note写入的文件也保存在这个目录,并且$filename满足session文件名要求:以 sess_ 开头,且只含有 a-z,A-Z,0-9,-

那么我们只需要创建一个用户名为:sess_
Ubunu默认安装的php中的session.serialize_handler默认设置为php,而这种引擎特点是即可使用|作为键值隔离符。利用|即可将序列字符串拼接
然后Add note提交title为:|N;admin|b:1;,这样反序列化结果即可为:admin==bool(true)
最后export.php?type=.即可使得这个.与前面的.拼接成..被替换为空,$filename也就成为了session文件名了
我们先进行登录

然后添加|N;admin|b:1;
|N;来闭合前面的杂乱数据


我们将-f6234ed0b79d012e
填入session中,刷新得到flag

贴个脚本
1 | import re |