打开题目
![](https://img-blog.csdnimg.cn/f954db84e91842989bfdcccde883a995.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA55uQ6Iy2VGVh,size_20,color_FFFFFF,t_70,g_se,x_16)
整理源码
![](https://img-blog.csdnimg.cn/a3ceb3437503484f81db008f9773a8c9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA55uQ6Iy2VGVh,size_20,color_FFFFFF,t_70,g_se,x_16)
代码审计: 目标 config['FLAG']
过滤了 config,self 这两个函数的过滤没看懂,总之好像也没过滤掉(应该是过滤了后面的变量),圆括号是彻底的被过滤掉了,URL编码都没用(刚开始想测试XSS来着)
![](https://img-blog.csdnimg.cn/1d70628edcfb4ab8846c819dfcc92622.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA55uQ6Iy2VGVh,size_20,color_FFFFFF,t_70,g_se,x_16)
做完后,拿编译器跑了一下带config的payload也没发现过滤
回归正题
2个@app.route 为路由 第一个是 / 使用URL/ 可访问index()也就是刚刚开始显示的源码
第二个为/shrine/ 这个路由用法同理 URL/shrine/payload
使用模板注入试试看会不会解析出来
![](https://img-blog.csdnimg.cn/58c6dda2b84a41ecb487edc208766f7a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA55uQ6Iy2VGVh,size_16,color_FFFFFF,t_70,g_se,x_16)
可以解析到,说明存在注入
吃老本了,使用Python内置函数读取全局变量 url_for或者get_flashed_messages
url/shrine/{{url_for.__globals__}}
![](https://img-blog.csdnimg.cn/91e7ba9c30864ae59248ce46b5fb3662.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA55uQ6Iy2VGVh,size_20,color_FFFFFF,t_70,g_se,x_16)
看到了属性的东西,代码审计的时候有 app.config['FLAG']
调用这个函数 看了其他师傅的WP对这步的解释是 :
python沙箱逃逸的方法是 利用python对象之间的引用关系来调用被禁用的函数对象
构造payloads: /shrine/{{url_for.__globals__['current_app'].config['FLAG']}}
![](https://img-blog.csdnimg.cn/520f8b764ce040bcb378f6616c6e1b55.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA55uQ6Iy2VGVh,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/1f9cd2cc694b4a23a4f8e595e2634c80.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA55uQ6Iy2VGVh,size_20,color_FFFFFF,t_70,g_se,x_16)
得到flag
flag{shrine_is_good_ssti}
另外一个方法 get_flashed_messages利用信息闪现的方法构造一样(只能显示一次)
![](https://img-blog.csdnimg.cn/da4a0507cf3247c0b18acaf4e78dda79.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA55uQ6Iy2VGVh,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/c8d751324c4b41af86fb5e317fa48849.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA55uQ6Iy2VGVh,size_20,color_FFFFFF,t_70,g_se,x_16)
Ending