[GDOUCTF 2023]泄露的伪装
知识点补充
"data 伪协议"是一种内联数据的方式
应用场景与实例
-
任意代码执行
当目标存在文件包含漏洞(如include($file);),并且服务器配置允许使用data协议时,你可以直接通过data协议嵌入并执行PHP代码。-
示例:
?file=data://text/plain,<?php system('cat /flag');?> -
技巧:如果题目过滤了某些关键字(如"flag"),可以尝试使用通配符*或编码绕过。例如,使用
tac fla*或cat fl''ag。
-
-
读取文件源码
在某些情况下,直接包含文件(如flag.php)只会执行其中的PHP代码而不会显示源码。这时,你可以利用data协议配合Base64编码,将文件内容以编码形式返回,然后自行解码。-
示例:首先,通过其他方式(如
php://filter)获取文件的Base64编码内容,然后使用data协议处理或展示。更常见的做法是直接使用php://filter读取源码,但data协议在某些特定过滤条件下可能成为替代方案。
-
-
绕过内容验证
在一些CTF题目中,代码可能会使用file_get_contents()函数检查某个URL或文件路径的内容是否等于特定字符串。此时,data协议可以方便地"提供"一个内容符合要求的"源"。-
示例:
?text=data://text/plain,welcome to the zjctf
-
解题思路
1.是一句话再上面,http://node5.anna.nssctf.cn:27851/
2.使用目录扫描工具对url进行扫描
3.看到有两个文件直接拼接到url里面发现再拼接第二个文件出现压缩包解压后出现了一个新的地址
3.转到

4.然后使用data伪命令,进行php绕过
?cxk=data://text/plain,ctrl
.
5.然后拼接进去就出现flag了
