ctf show web 入门39

打开靶场这是一道本地文件包含结合PHP伪协议的题目

我们首先观察后端逻辑:

输入点:通过 $_GET'c' 接收用户参数。

过滤机制:preg_match("/flag/i", c)检查参数中是否包含"flag"字符串(/i表示不区分大小写)。如果包含,则不执行包含逻辑。执行点:include(c) 检查参数中是否包含 "flag" 字符串(/i 表示不区分大小写)。如果包含,则不执行包含逻辑。 执行点:include(c)检查参数中是否包含"flag"字符串(/i表示不区分大小写)。如果包含,则不执行包含逻辑。执行点:include(c.".php");。这是漏洞的核心,程序会将你传入的内容拼接上 .php 后缀后进行包含。

关键字过滤:提示说 flag 在 flag.php 里,但我们不能直接传 c=flag。

强制后缀:后端会自动加上 .php(include($c".php"))。如果我们尝试读取非 PHP 文件,或者使用某些伪协议,必须考虑这个后缀的影响。

我们尝试构造payload:

url+?c=data://text/plain,<?php system('cat f*');?>

绕过原理:使用f*统配符绕过了对flag字符串的正则匹配

标签闭合:由于代码被拼接后是include("...?>.php")PHP解析器在遇到?>后会停止解析代码,,后面的".php"会被当成普通的字符串直接输出,不会导致语法错误最后得到flag

相关推荐
六点_dn1 小时前
RabbitMQ学习笔记-部署和使用
笔记·学习·rabbitmq
用户059540174461 小时前
把AI对话记忆存储测试从手工改成Playwright+pytest,覆盖率从20%提到96%,回归时间缩短90%
前端·css
kyriewen1 小时前
别再这样写TypeScript了——Code Review中最常见的8个反模式
前端·javascript·typescript
名字还没想好☜1 小时前
Next.js ‘use client‘ 到底加在哪:Server/Client Components 边界与常见报错
开发语言·前端·javascript·react·next.js
午安~婉2 小时前
GitHub Token/ GitHub Stats统计显示图异常
前端·github·vercel·github token
码云之上2 小时前
AI Agent 工程化总览篇:从 Prompt 到 Harness
前端·人工智能
2501_926978332 小时前
以说明书 DNA 为模板——完整 AGI 的结构图景
前端·人工智能·经验分享·笔记·ai写作
IT_陈寒2 小时前
Vite静态资源引用这个坑我踩得有点疼
前端·人工智能·后端
天天爱吃肉82182 小时前
商用车多体动力学实战笔记|第6篇:动力传动系统(发动机、变速箱、分动器、TCS、LSD限滑差速)
大数据·人工智能·笔记·python·嵌入式硬件·汽车
IT19953 小时前
Dify 实战笔记:工作流核心玩法 + 开源 AI 应用全解析
笔记