让用户提交Python代码并在服务器上执行,是一些OJ、量化网站重要的服务,很多CTF也有类似的题。为了不让恶意用户执行任意的Python代码,就需要确保Python运行在沙箱中。沙箱经常会禁用一些敏感的函数,例如os,研究怎么逃逸、防护这类沙箱还是蛮有意思的。
前言Python的沙箱逃逸的最终目标就是执行系统任意命令,次一点的写文件,再次一点的读文件。
顺便安利一本书:《流畅的Python》。这本书有很多中高阶知识点,很全面而且讲的很清楚,如果你看过,相信理解这篇文章的大多数内容都不是问题。
接下来的内容先讲系统命令执行,再讲文件写入、读取,并且均以oj为例,库大多以os为例。
执行系统命令基础知识先啰嗦一些基础知识
在Python中执行系统命令的方式有:
os