[HarekazeCTF2019]Easy Notes
分析源码
首先按照惯例使用Seay扫描,报告说index.php包含漏洞的文件。
打开index看看代码逻辑
$page变量只能用这些参数来代替
翻翻目录,发现了flag.php
我们发现这里的意思是用它admin账户登陆
Ctrl+左键跟进函数,跟进函数
发现这个地方就是判断$session,显然,这个问题的点是session欺骗
根据我们可以使用的点
- 一是注册username
- 第二个是上传的文件名称
- 第三个是上传的文件内容
- 第四个就是export回显下载功能
观察后可发现
我们写入的node的title会:
由note.php中得到传到add.php再通过add_note()这个函数传输到$session中
所以我们可以在这个地方建一个地方admin的session了
利用session反序列化机制:
XXXX|N;admin|b:1;XXXX
其中
- |N;封闭前面凌乱的字符,即XXXX的值是NULL
- admin|b:1;表达是admin这个键的键值是bool类型的1
惊讶地发现这个地方,,session我们下载的文件目录在一起。
如果我们使用它,这里有一个想法admin=bool(true)构建一个权限session放在TEMP_DIR在路径下,这并不意味着我们构建了一个session包,他的属性是admin了!
然后我们用这个session服务器访问我们时会访问我们session对应的文件包,发现这个文件包是admin所以我们可以访问属性flag。
解题步骤:session欺骗
参考链接:https://blog.csdn.net/mochu7777777/article/details/106909777
取一个1命名的文件。观察我们下载的文件session包:
我们可以看到文件名以我们上传了一个==|N;admin|b:1;==并获得文件session
然后用这个session访问即可
[外链图片转存失败,源站可能有防盗链机制,建议保存图片并直接上传(img-zgmjgV6r-1652494945031)(C:\Users\No name‘s hero\AppData\Roaming\Typora\typora-user-images\image-20220514032215210.png)]
修改后点击刷新,然后刷新网页
参考链接:
https://blog.csdn.net/mochu7777777/article/details/107568406 https://guokeya.github.io/post/Kpq_sd7RO/ https://blog.csdn.net/mochu7777777/article/details/106909777