【misc】[HNCTF 2022 Week1]calc_jail_beginner(JAIL) --沙盒逃逸
这是一道python沙盒逃逸的题目:
沙箱逃逸:就是在给我们的一个代码执行环境下,脱离种种过滤和限制,最终成功拿到shell权限的过程,其实就是闯过重重黑名单,最终拿到系统命令执行权限的过程,这里不理解没关系,多做两道题就知道了,老实说国内的沙箱逃逸的题不是很多,而且大多都是面向新手的?对我来说正好就是了,然后的话,如果像深入了解的话还是建议去做做国外的沙箱逃逸,国外出得比较多
这里先补充一些关于沙箱逃逸的知识点
花式 import
首先,禁用 import os
肯定是不行的,因为
import os
import os
import os
...
都可以。如果多个空格也过滤了,Python 能够 import 的可不止 import
,还有 __import__
:__import__('os')
,__import__
被干了还有 importlib
:importlib.import_module('os').system('ls')
这样就安全了吗?实际上import
可以通过其他方式完成。回想一下 import 的原理,本质上就是执行一遍导入的库。这个过程实际上可以用 execfile
来代替
现在我们下载以下题目给的附件
这里有个eval函数:
eval()
是Python的一个内置函数,用于执行字符串代码。它接受一个字符串作为参数,并将其作为Python代码进行解释和执行。
就是说eval函数可以执行我们输入的字符串代码
这里输入__import__('os').system('sh')即可getshell,__import__('os')表示导入os库,里面有系统执行的函数