[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 |