[MoeCTF 2021]地狱通讯
访问题目后查看源代码
代码审计可知是用python管理的站,存在ssti,可以通过GET传参变量名为:f1ag和exp
如果我们不输入默认是””,传参后会将f1ag传入FLAG()函数后结果给flAg,但是FLAG()函数的功能不知道
,然后通过将”Your flag is {0}”和exp拼接以后给message,接下来开始对exp进行判断如果为“”就回显app.py的源码,也就是我们现在看到的源码,如果exp不是“”那么就返回message并且通过format函数将flAg的值传入{0}中后返回
思路:
由上方代码我们发现format传入只有一个值所以默认会放入下标为0的位置并且可以重复,而且我们发现执行了{0.class}所以相当于吧“a”放入0下标的位置并且执行了__class__所以我们知道最后执行的语句为’a’.class,所以上题我们可以让exp=”{0.class}”至于这里为什么是”0”,因为我们最后的format传入的值只有一个所以只能为”0”,然后我们让f1ag随便传入一个值
可见当前类属于flag,可以查看一下当前类都有哪些属性
查看后我们找到了flag