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

相关推荐
Rkgua15 小时前
TS中`Function`、`CallableFunction` 和 `NewableFunction`的函数区别
前端
Asize15 小时前
重生之我在 Vibe Coding 时代当程序员:第十一课,JS底层 :变量提升真相
前端·javascript
HYCS15 小时前
用pixi.js实现fabric.js(五):事件系统
前端·javascript·canvas
Momo__15 小时前
Node.js 26 来了:Temporal API 默认启用,Date 终于可以退休了
前端·node.js
雨季mo浅忆15 小时前
记录前端内网开发之新入职篇
前端·内网开发
码云骑士15 小时前
Android SWT重启问题
android
哇嘎呀15 小时前
OSPF笔记
网络·笔记
Upsy-Daisy15 小时前
IOTA 学习笔记(三):IOTA 的技术演进路线
笔记·学习
杨运交15 小时前
[025][Web模块]基于 Spring Boot 的请求日志过滤器设计与实现
前端·spring boot·后端
有个人神神叨叨15 小时前
Agent Memory 学习笔记-1.0
笔记·学习