MAR DASCTF复现
baby_flask
blacklist</br> |
感觉对于函数还是一无所知,决定去啃一下flask框架的文档:
好了 ,啃完回来了,直接开始构造payload吧:
思路:
由于它过滤很多内容,所以我们先要将它过滤的内容以其他形式替换找出来:
举个栗子:
他过滤的数字我们可以用:𝟎𝟏𝟐𝟑𝟒𝟓𝟔𝟕𝟖𝟗来代替
我们先来贴一下一个大神的payload,再根据他的构造本题的payload:
#Author:颖奇L'Amore |
参考:http://ctf.ieki.xyz/library/ssti.html
这里我就解析一下几个看不太懂的点:
1.__doc__的作用按我的理解是,调用app中的文档字符串,然后将它收入list当中,最后使用pop函数调用出来特定的我们需要的字符并使用string()函数将这个变量转化为字符串形式(感觉很巧妙,打开新思路了)。
2.接下来就是定义几个dict,然后使用join()函数将其进行拼接
3.最后就是实现调用
参考:https://blog.csdn.net/miuzzx/article/details/110220425
回看本题:过滤了pop()但是没过滤attr,attr可以获取对象的属性,这里我们可以将其理解为”作用”:
{%set a=dict(op=x,p=x)|join()%}#pop |
小结:
这次的复现有点迟,好在还是学到了很多东西,感觉ssti注入的最高等级应该就是东拼西凑了吧?可能是我还没遇到更难的题吧
MAR DASCTF复现