ctfweb:flask+ssti

两个思路一样的题er...

星愿信箱;

给了一个输入内容重复回显的页面,先用wappalyzer进行技术栈识别

一个基于python的flask,先看有没有ssti漏洞,没有的话尝试session伪造

尝试{{7*7}},没有有效回显

补充模板引擎:

  • Jinja2:使用{{}}作为输出语法({{7*7}})
  • Mako:使用{}作为输出语法({7*7})

尝试{%%},回显成功,存在ssti漏洞,而且{{}}可能被过滤掉了

找可以访问的全局对象------回显包括这个flask的所有全局变量,函数,导入模块,内置函数,看全局对象的原因是为了看__builtins__与os模块是否存在,他们如果都存在的话,证明我们可以用一些命令来探测信息

复制代码
{% print(url_for.__globals__) %}

存在包含 __builtins__ 的字典对象以及os

直接尝试读取flag

复制代码
{% print(url_for.__globals__['__builtins__']['open']('/flag').read()) %}

回显成功

玄武杯 2025锦家有什么

flask..

进入主页面,发现按钮失效,view-source一下:

提示路径try_a_try

访问,提示输入参数

发现写入name参数的时候回显有改变?name=leee

因为先前验证了模板是flask,所以试一下ssti,回显正确

继续看全局对象,?name={{url_for.globals}},回显有__builtins__以及os

直接读,?name=={{(url_for.globals'__builtins__''open'('/flag').read())}}

拿到flag

相关推荐
IT_陈寒6 小时前
Redis的DEL命令居然没删干净数据?这个坑我爬了半天
前端·人工智能·后端
程序员小八7776 小时前
Java 快速转 Go
java·python·golang
罗超驿7 小时前
SpringMVC 请求参数接收详解|单个参数、多参数、对象参数、@RequestParam参数重命名
java·后端·postman·javaee
__zRainy__7 小时前
Node系列 · ORM:Sequelize 简介
数据库·后端·node.js
梦想的旅途27 小时前
Python实现企业微信文本消息发送
开发语言·python·企业微信
%478 小时前
DAY41
pytorch·python
敲代码还房贷8 小时前
VMware17 + Ubuntu22.04 共享 完整步骤
linux·python·ubuntu
AskHarries8 小时前
OpenClaw 如何查看历史对话和响应时间?
后端
n8n8 小时前
Spring Boot 3.2+ 新特性、Spring AI 核心架构与 API Key 安全管理技术文档
后端
fireworks998 小时前
接口鉴权(401与403)
java·后端