[HFCTF2020]JustEscape(vm沙箱逃逸)
页面有一堆提示的东西
我们可以访问
/run.php
发现了一串代码
1 | <?php |
考虑到提示,又由于eval()函数不仅仅是php含有的,Node.js也有这个函数。于是用Errot().stack
测试,页面回显了一堆错误报错。
测试过后发现是nodejs。
根据这些报错,应该可以确认是vm沙箱逃逸,在这里面有最新的沙箱逃逸的poc。https://github.com/patriksimek/vm2/issues/225
但是直接用的话,应该会被waf拦截
经过探测,发现waf过滤掉了一下的关键字。
1 | ['for', 'while', 'process', 'exec', 'eval', 'constructor', 'prototype', 'Function', '+', '"','''] |
我们用javascript的模版文字绕过。
1 | prototype变成`${`${`prototyp`}e`}` |
payload.
1 | (function (){ |
当然prototype还能用拼接绕过
1 | prototype变成`p`,`r`,`o`,`t`,`o`,`t`,`y`,`p`,`e` |