[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访问即可
修改后点击刷新,再刷新网页即可
参考链接:
https://blog.csdn.net/mochu7777777/article/details/107568406
https://guokeya.github.io/post/Kpq_sd7RO/
https://blog.csdn.net/mochu7777777/article/details/106909777
Comments | NOTHING