babypython决赛题复盘:Python沙箱逃逸与黑名单绕过
决赛倒计时还剩四十分钟的时候我们的记分板页面刷新了不下二十次babypython 这道题的通过队伍数始终停在三位数开头。题面只有一句话一个 Python 沙箱给你一次执行机会。拿到源码的那一刻我确实轻敌了一段eval加一份黑名单按以往经验().__class__.__bases__[0].__subclasses__()这条老路十分钟就能收工。真正坐到屏幕前才发现出题人几乎把我知道的每一条捷径都提前焊死了连getattr这种万能钥匙都写进了黑名单。这篇 Write-up 想完整记录我们从轻敌、试错、卡死到最后绕出来的全过程重点不是那串最终 payload而是每一步为什么走不通、又为什么能绕过去。如果你也在做 Python 沙箱逃逸类的题目或者想搞清楚自己写的沙箱到底漏在哪下面的推演过程应该能直接用上。1. 一道看着简单的Python沙箱题到底在考什么1.1 题面长什么样一个输入框和一份黑名单题目