[NSSCTF 2nd]php签到
通过1.php/.来绕过waf即可
pathinfo解析的时候当成了1.php下的.文件,所以后缀为NULL,成功绕过,然后file_put_contents函数会处理成1.php
[NSSCTF 2nd]MyBox
非预期直接读file:///proc/1/environ
预期读/app/app.py得到源码
发现SSRF利用点,它是自定义的mybox协议,而不是gopher协议
但思路是一样的,将gopher的脚本改成mybox即可,反复发包,得到中间件的版本信息,Apache/2.4.49 (Unix)
搜索到CVE-2021-41773
将脚本里的数据包改成payload的样子,再反弹shell即可
[NSSCTF 2nd]MyHurricane
Tornado框架的模板注入,直接读文件即可
ssti={% include /proc/self/environ %}
[NSSCTF 2nd]MyJs
通过源码发现const user = jwt.verify(token, secret, {algorithm: "HS256"});
其中jwt中指定加密的算法应该是algorithms通过数组引入,而不是algorithm
相当于algorithms为空了,那么是允许空密匙的,而密匙是从全局数组serects中选择的,即serects[sid]
而且sid要求>=0和<数组的长度,为了是选择的密匙为空,我们可以传入[],在js的弱比较中,[]==0,成功绕过限制
然后是ejs模板引擎污染,直接用payload打即可