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

相关推荐
牧艺几秒前
用 Next.js 搭建 AI Agent 前端编排:从 Plan 到 SSE Trace 的完整实践
前端·agent
行者全栈架构师1 分钟前
UniApp集成vk-uview-ui组件库详解:打造高效UI开发体验
前端·vue.js
林希_Rachel_傻希希6 分钟前
js里面的proxy理解。以及vue3响应式数据设计底层
前端·javascript·面试
sunrains7 分钟前
uniapp x 动态Tabbar(切换无闪烁)+动角标+主题切换+自定义tabbar页面导航栏样式设置 支持服务端动态配置根据角色动态设置Tabbar
前端
把马铃薯变成土豆7 分钟前
前端Stripe跨境支付对接感想
前端·源码
牧艺10 分钟前
用 Three.js 实现一个浏览器端 3D 看车的项目
前端·three.js
hunterandroid11 分钟前
WorkManager:可靠的后台任务调度
前端
hunterandroid15 分钟前
[Android 从零到一] Navigation Component:让页面跳转更清晰
前端
搬砖的码农17 分钟前
(05)进程一关对话就没了:聊天记录怎么存、重启怎么恢复
前端·agent·ai编程
Csvn1 小时前
Vue 3 defineModel 翻车实录:多个 v-model 绑定到底怎么写?
前端·vue.js