[GYCTF2020]Ez_Express-原型链污染学习
最近学习下nodejs相关的题目,所以做了这道题
进入题目界面长这样
简单的试了下功能,也就是一个登录注册按钮,登陆后如下所示
要求需要ADMIN登录,这是一个不能注册的账户,而且我们又不知道密码
没法进行下去的时候试一试扫描目录,结果还真扫出了源代码
通过审代码我们发现,注册的时候调用了safeKeyword函数,这个函数使我们注册时不能用admin,但是又需要题目要求用ADMIN登录才行
这里我是正好看了做上一道js题目时收藏的trick
这就很舒服了,这里也用到了toUppercase,而且ADMIN中的I可以由特殊字符变来,那就注册个admın
随便输入了一些东西没啥回显,接下来还是接着审代码吧
这里看到一个clone函数,里面又调用了merge
emem还是上面那篇小trick里提到的
显而易见,这里要用到原型污染链
到这里不知道怎么往下做了,看了下赵总的WP,才发现,用到的还是上面用到的trick文章中的东西
题目这里正好也用到ejs渲染outputFunctionName,漏洞分析的文章是这么说明该漏洞的,还给了RCE代码
简而言之也就是说,只要我们利用污染连污染了outputFunctionName,那么后面模板渲染的时候他就会执行我们污染时写进去的代码
那我们先正常抓个包
然后用下上面文章的RCE代码,按照原型污染链的方法,写成json形式,改下Content-Type即可
把这个包发出去后刷新页面即可得到一个文件,文件里记录着flag
最后还得推荐下P神的文章学习原型链污染
参考文章:
https://www.cnblogs.com/20175211lyz/p/12659738.html
https://evi0s.com/2019/08/30/expresslodashejs-%e4%bb%8e%e5%8e%9f%e5%9e%8b%e9%93%be%e6%b1%a1%e6%9f%93%e5%88%b0rce/
https://www.leavesongs.com/PENETRATION/javascript-prototype-pollution-attack.html#0x05-code-breaking-2018-thejs
https://www.zhaoj.in/read-6462.html