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

相关推荐
喜欢就别4 小时前
【Agentic RL / 强化学习 / OPD】OpenClaw-RL 源码阅读笔记 --- (2)--- On-Policy Distillation
人工智能·笔记
Lhappy嘻嘻6 小时前
Java IO|File 文件操作 + 字节流 / 字符流完整笔记 + 递归删除文件实战
java·笔记·php
胡萝卜术6 小时前
从API调用到手写LRU:力扣146「LRU缓存」的哈希表+双向链表终极进化之路
前端·javascript·面试
科技道人6 小时前
记录 默认置灰/禁用 app ‘Search Engine Selector‘ 的disable按钮
开发语言·前端·javascript
天疆说6 小时前
Zotero Connector 在 Edge 里找不到桌面 Zotero(Linux / Zotero 9.0.6 / Edge 150)
linux·前端·edge
-SOLO-8 小时前
Android Event 日志完全指南
android
李伟_Li慢慢8 小时前
02-从硬件说起WebGL
前端·three.js
GLDbalala8 小时前
GPU PRO 5 - 4.6 Adaptive Scalable Texture Compression 笔记
笔记
xian_wwq8 小时前
【学习笔记】模型权重管理:Safetensors与私有化Hub(23/35)
笔记·学习
壮哥_icon9 小时前
【Android 系统开发】从掉帧卡顿到丝滑:高频硬件中断(IRQ)的 CPU 亲和性性能优化实战
android·性能优化