攻防世界Web_shrine
题目:

给的是源代码,整理一下如下:

看到jinjia flask,render_template_string猜测到这题应该是考查python模板注入。
代码分析可以得到以下信息:
1.路径在 /shrine/ 下
2.将()都用空格替换 所以通过render()渲染函数方式失效。这里的方式是适用内置函数:get_flashed_messages(), url_for()
3.黑名单有config,self
url_for()
一般我们通过一个URL就可以执行到某一个函数。如果反过来,我们知道一个函数,怎么去获得这个URL呢?
url_for函数就可以帮我们实现这个功能。url_for()函数接收两个及以上的参数,他接收函数名作为第一个参数,接收对应URL规则的命名参数,如果还出现其他的参数,则会添加到URL的后面作为查询参数。
get_flashed_messages()
返回之前在Flask中通过 flash() 传入的闪现信息列表。
把字符串对象表示的消息加入到一个消息队列中,然后通过调用get_flashed_messages() 方法取出(闪现信息只能取出一次,取出后闪现信息会被清空)。
解题过程:参考python_template_injection这篇。
1.测试路径发现是模板注入点
2.查询当前类

3.查询当前类所继承的基类

4.查询引用这些基类的列表发现报错,之前方法行不通,换给方法。
payload换成{{url_for.__globals__}}查找当前当前的app

查看当前配置,找到flag.

或用get_flashed_messages()

总结:
flask 在 /shrine/ 下的 SSTI模板注入方法payload如下:
{{url_for.__globals__['current_app'].config}}
{{get_flashed_messages.__globals__['current_app'].config['FLAG']}}
攻防世界Web_shrine的更多相关文章
- CTF--web 攻防世界web题 robots backup
攻防世界web题 robots https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=506 ...
- CTF--web 攻防世界web题 get_post
攻防世界web题 get_post https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5 ...
- 攻防世界 web进阶练习 NewsCenter
攻防世界 web进阶练习 NewsCenter 题目是NewsCenter,没有提示信息.打开题目,有一处搜索框,搜索新闻.考虑xss或sql注入,随便输入一个abc,没有任何搜索结果,页面也没有 ...
- 【攻防世界】高手进阶 pwn200 WP
题目链接 PWN200 题目和JarvisOJ level4很像 检查保护 利用checksec --file pwn200可以看到开启了NX防护 静态反编译结构 Main函数反编译结果如下 int ...
- XCTF攻防世界Web之WriteUp
XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...
- 攻防世界 | CAT
来自攻防世界官方WP | darkless师傅版本 题目描述 抓住那只猫 思路 打开页面,有个输入框输入域名,输入baidu.com进行测试 发现无任何回显,输入127.0.0.1进行测试. 发现已经 ...
- 攻防世界 robots题
来自攻防世界 robots [原理] robots.txt是搜索引擎中访问网站的时候要查看的第一个文件.当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在, ...
- 【攻防世界】 高手进阶区 Recho WP
0x00 考察点 考察点有三个: ROP链构造 Got表劫持 pwntools的shutdown功能 0x01 程序分析 上来三板斧 file一下 checksec --file XXX chmod ...
- CTF -攻防世界-crypto新手区(5~11)
easy_RSA 首先如果你没有密码学基础是得去恶补一下的 然后步骤是先算出欧拉函数 之后提交注意是cyberpeace{********}这样的 ,博主以为是flag{}耽误了很长时间 明明没算错 ...
随机推荐
- [Altium Designer 学习]怎样输出Gerber文件和钻孔文件
为了资料保密和传输方便,交给PCB厂商打样的资料一般以Gerber和钻孔文件为主,换句话说,只要有前面说的两种文件,就能制作出你想要的PCB了. 一般来说,交给PCB厂商的Gerber有以下几层: G ...
- 【解决了一个小问题】vmselect对应的vmstorage端口配置错误导致的问题
从vmselect查询的时候,出现如下错误: error when executing query="up" on the time range (start=1639388706 ...
- C# 在PDF文档中应用多种不同字体
在PDF文档中,可绘制不同字体样式.不同语言的文字,可通过使用Standard字体.TrueType字体.CJK字体或者自定义(私有)等字体类型.下面通过C#程序代码来展示如何实现使用以上类型的字体来 ...
- python05day
之前代码总行数735+133=868 内容回顾 列表:容器型数据类型,可以承载大量的数据,有序的数据 增: append 追加 insert 插入,按索引增 extend 迭代着追加 删: pop 按 ...
- Homework_1
寒假第一份作业 一.博客园部分 1.个人博客园链接 Click here 2.markdown界面截图 我用typora编辑 所以贴上typora界面的截图 二.Github部分 1.个人Github ...
- Vue3源码分析之微任务队列
参考资料:https://zh.javascript.info/microtask-queue#wei-ren-wu-dui-lie-microtaskqueue 简化版 Vue3 中的 微任务队列实 ...
- Spring源码-IOC部分-Spring是如何解决Bean循环依赖的【6】
实验环境:spring-framework-5.0.2.jdk8.gradle4.3.1 Spring源码-IOC部分-容器简介[1] Spring源码-IOC部分-容器初始化过程[2] Spring ...
- webpack学习:uni运行时代码解读一 (页面初始化加载)
uni的vue代码是如何在微信小程序里面执行的,对此比较感兴趣所以去调试学习了一波. 准备工作 // 在vue.config.js里打开非压缩的代码 module.exports = { config ...
- Visual Studio 2010 怎么查看函数的重载数量、范围、种类等
将光标放置在()括号内,然后按ctrl + shift + 空格 ,这样就会显示出具体的重载数量与种类,按上键或下键就可以翻看了:
- 对线面试官,凭借nginx能一战封神吗?
面试官:小伙子,你对nginx熟悉吗? 我:当然熟悉了,请听我慢慢道来. 心里想,我能吊打面试官吗?今天非得灭一灭面试官的威风,平时都被怼的狗血淋头. 面试官:就你那点花花肠子,咱还不清楚. 我:.. ...
