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

相关推荐
输出输入10 小时前
学习前端主流书单推荐
前端
anyup10 小时前
uView Pro X 1.0.0 发布:全面支持 uni-app x 蒸汽模式,80+ 组件
前端·uni-app·ai编程
职豚求职小程序刷题10 小时前
宁德时代社招高岗晋升测评笔试改版了
笔记
CarIise10 小时前
JDBC 与数据库事务核心
数据库·笔记
apollo_qwe10 小时前
大模型 API 接通了,AI 聊天页面为什么还是不好用?
前端·vue.js·人工智能
爱勇宝10 小时前
你可能成不了技术大佬,然后呢?
前端·后端·程序员
鬼手点金10 小时前
KV Cache 未必是一次性的:可编辑、可组合的“笔记”
java·人工智能·笔记·学习·自动化·1024程序员节
摇滚侠11 小时前
《On Java 中文版 基础卷》阅读笔记 初始化和清理 08
java·开发语言·笔记
疯华整猫11 小时前
从 MVP 到 MVI,从 Java 到 Kotlin:老项目升级的避坑指南
前端
徐小夕@趣谈前端11 小时前
Web 端 OFD 编辑器踩坑记:从“只能预览”到“在线改”
前端·编辑器