进入题目环境发现一个超链接尝试点击,返回了一段文字
发现url请求了一个file参数
这里介绍几种文件包含的伪协议
php://filter/ 可以对打开的数据流进行筛选和过滤,常用于读取文件源码
使用文件包含文件时,文件中的代码会执行,如果想要读取文件源码,可以使用base64对文件内容进行编码,编码后的文件内容不会被执行,而是展示子啊页面,我们将页面中的内容使用base64解码,就可以获取文件源码了
Php://input 可以访问请求的原始数据,配合文件包含漏洞可以将post请求体中的内容当作文件内容执行,从而实现任意代码执行,需要注意的是,当enctype=multipart/from-data时,php://input将会无效
使用实例
Php://input 然后进行post请求
data:// 协议格式data:资源类型;编码,内容
Data://text/plain,<?php system(‘ls’)?>
使后面的内容当作文件内容来执行,从而造成任意代码执行
Data://text/plain,<?php system(‘id’)>
Zip:// zip协议用来读取压缩包中的文件,可可以上传开启后门,获取webshell
将shell.txt压缩成zip,再将后缀名改为jpg上传至服务器,再通过zip伪协议访问压缩包里的文件,从而链接木马。
实验试例: 把一个webshell改名为.jpg 文件 压缩为zip 格式上传 最后 zip://webshell.zip#webshell.jpg 一句话木马会执行。
我们使用尝试该伪协议进行包含读取flag.php:
Php://filter/convert.basse64-encode/resource=flag.php 成功获得base64加密后的flag.php源码
进行base64解密获得flag