前言:
- 考点:文件包含,data伪协议
- Data伪协议 嵌入纯文本:
data:,纯文本内容(当数据为纯文本且无需指定数据类型时,可省略「MIME 类型」和「编码」,直接用基础格式 - Data伪协议 嵌入可执行内容(指定[MIME类型]):
data:[MIME],[可执行内容] - Data伪协议 嵌入二进制数据(base64编码):
data:[二进制MIME类型];base64,Base64编码后的数据
- Data伪协议 嵌入纯文本:
解题步骤:
- 1.进入靶场,是一段PHP代码,我们进行代码审计,大致说是要以GET方式得到变量
$page的值,而且使用了循环语句,一旦识别到page值中存在php://,会将其改为空格,不断循环,直至不存在为止,简单理解为过滤掉了php://

- 2.过滤掉了
php://,导致我们filter伪协议没办法使用,我们这时想到data伪协议,构造payload :data://text/plain,<?system('ls')?>输入运行得到

我们肯定对fl4gisisish3r.php感兴趣,访问它 - 3.修改执行命令,将ls改为
cat fl3gisisish3r3.php,输入运行,flag在源码里,我们查看源码就可以得到 - 4.如果想直接得到flag,可以将可执行内容改为
show_source('cat fl4gisisish3r3.php')这样就可以直接显示flag